Powershell - XPath - Funktion SUM() und Count() Kind-Knoten - XPath-Ausdruck Nur

Neue Xpath -, zwischen-mit der powershell. Verbrachte eine gute Menge Zeit mit der Erforschung von gestern, die ich nicht finden konnte, ein einziges Beispiel der xpath-Funktion sum() oder count () - Ausdrücke innerhalb einer powershell -XPath-Befehl. Ich Schreibe diese wortreich als meine erste stackoverflow-Frage, so dass die Zukunft Menschen finden diesen Artikel ein klares Beispiel Antwort aus einer XPert.

Ziele (2):
1. Count() die entscheidenden Prozesse.
2. SUM() die verarbeiteten Transaktionen durch kritische Prozesse.

Hinweis: Die Ausgabe der powershell XPath-Befehl sollte der raw-Reihe.

<units>
<unit>
  <unitName>Generic Process Unit</unitName>
    <attribute>
      <name>Process Type</name>
      <value>Critical Process</value>
    </attribute>
    <attribute>
      <name>Transactions Processed</name>
      <value>10</value>
    </attribute>
</unit>

<unit>
  <unitName>Generic Process Unit</unitName>
    <attribute>
      <name>Process Type</name>
      <value>Trivial Process</value>
    </attribute>
    <attribute>
      <name>Transactions Processed</name>
      <value>7</value>
    </attribute>
</unit>

<unit>
  <unitName>Generic Process Unit</unitName>
    <attribute>
      <name>Process Type</name>
      <value>Critical Process</value>
    </attribute>
    <attribute>
      <name>Transactions Processed</name>
      <value>5</value>
    </attribute>
</unit>
</units>

Mein Bestes versuchen, an die SUM-Funktion. Nicht sogar versuchen, die Zählen:

select-xml -path mine.xml -XPath '//attribute[value="Critical Process"]/../attribute[name="Transactions Processed"][sum(value)]' | Select-Object -ExpandProperty node | select Value

Edit: Funktioniert XPath-von notepad++ XMLTool plugin ist unten, aber immer noch müssen Sie die Powershell-äquivalent (dies funktioniert nicht Powershell):

sum(//attribute[value="Critical Process"]/../attribute[name="Transactions Processed"]/value)

Errata:
Der Grund, den es braucht, um XPath-Ausdrücke, die nur, ist, dass ich nur mit powershell zu erstellen und zu validieren meiner XPath-strings. Das Endziel ist, um diese strings in eine nicht-powershell-software, die tatsächlich verwenden Sie den XPath-string. Diese software gibt mir keine Möglichkeit zur Validierung eines XPath, und es dauert 20 Minuten, um zu sagen, ob es funktioniert, nachdem ich es in, so dass ich mit powershell als meine Testumgebung.

Ich geändert habe, die item-Namen, Beschreibungen und Attribute entfernt, um das Beispiel einfacher. Allerdings, ich weiß nicht, ob das "schema" Worte sind wichtig, also hier ist ein Beispiel eines ursprünglichen "Wert" - Zeile.

<value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">Critical Process</value>

Fragen:

  • Scheint es, dass eine gegebene XPath-Ausdruck muss optimiert werden, nur ein bisschen Arbeit in der powershell. Zum Beispiel, nach -XPath '/xpath/Knoten' Sie scheinen immer beenden müssen mit: '/text()' | Select-Object -ExpandProperty Knoten | Wert auswählen, der Sie tatsächlich sehen, die Ausgabe, die Sie wollen.

  • Microsoft hat XPath-Dokumentation und Powershell-Dokumentation, aber keine "XPath-Ausdrücken in Powershell" - Dokumentation.

  • Meisten internet-Beispiele für Ausdrücke verwenden "Powershell + XPath" do minimum XPath-Daten-Objekt aus, und klicken Sie dann Durchlaufen mit foreach in der powershell.

  • Wie es aussieht ist die syntax möglicherweise haben einige der Abhängigkeit von XPath-Versionen 1, 2, etc.

Vielen Dank im Voraus.

InformationsquelleAutor solvingJ | 2014-08-10
Schreibe einen Kommentar