none
Powershell xml selectnode RRS feed

  • Frage

  • Hallo Zusammen

    I habe ein Problem ein XML node im folgenden XML File auszuwählen.

    Habe zwei Child Nodes unter Workbook/Worksheet und möchte nur Node mit dem Namen 'Details' auswählen und dann durch die Childnodes loopen.

    Mit dieser Zeil kann ich beide nodes auswählen und durch alle cildnodes loopen brauche aber nur Node mit dem Namen 'Details'

    $worksheet = $xml.Workbook.Worksheet .Table.Row

    Was mache ich falsch. Kann mir jemand hier weiterhelfen..

    Habe folgendes probiert um Details auzuwaheln funktioniert aber nicht. Habe immer leere Variable.

    [xml]$xml = Get-Content 'C:\Temp\test.xml'
    $selectNode = $xml.SelectNodes("//Worksheet[@Name='Details']")

    Mein XML File:

    <?xml version="1.0" encoding="UTF-8"?>
    <Workbook xmlns:user="urn:my-scripts" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns="urn:schemas-microsoft-com:office:spreadsheet">
    <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
    <ActiveSheet>0</ActiveSheet>
    </ExcelWorkbook>
    <Worksheet ss:Name="Summary">
    <Table>
    <Row ss:StyleID="Header">
     <Cell>
     <Data ss:Type="String">StringValue</Data>
     </Cell>
     </Row>
     <Row ss:StyleID="ReportHeader">
     <Cell>
     <Data ss:Type="String">Report</Data>
     </Cell>
     </Row>
     <Row ss:StyleID="ReportDescr">
     <Cell>
     <Data ss:Type="String">Detected Group report</Data>
     </Cell>
     </Row>
     <Row>
     <Cell/>
     </Row>
     <Row>
     <Cell/>
    </Row>
    <Row>
     <Cell ss:StyleID="TableHeader">
     <Data ss:Type="String">Severity level</Data>
     </Cell>
     <Cell ss:StyleID="TableHeader">
     <Data ss:Type="String">Group0</Data>
     </Cell>
     <Cell ss:StyleID="TableHeader">
     <Data ss:Type="String">Vendor alias</Data>
     </Cell>
     <Cell ss:StyleID="TableHeader">
     <Data ss:Type="String">Application alias</Data>
     </Cell>
     <Cell ss:StyleID="TableHeader">
     <Data ss:Type="String">Devices</Data>
     </Cell>
     <Cell ss:StyleID="TableHeader">
     <Data ss:Type="String">Groups</Data>
     </Cell>
     <Cell ss:StyleID="TableHeader">
     <Data ss:Type="String">Protection technologies</Data>
     </Cell>
    </Row>
    </Table>
    </Worksheet>
    <Worksheet ss:Name="Details"><Worksheet ss:Name="Details"> <Table> <Row> <Cell ss:StyleID="TableHeader"> <Data ss:Type="String">Severity level</Data> </Cell> <Cell ss:StyleID="TableHeader"> <Data ss:Type="String">Group1</Data> </Cell> <Cell ss:StyleID="TableHeader"> <Data ss:Type="String">Virtual Server</Data> </Cell> <Cell ss:StyleID="TableHeader"> <Data ss:Type="String">Vendor alias</Data> </Cell> <Cell ss:StyleID="TableHeader"> <Data ss:Type="String">Vendor</Data> </Cell> <Cell ss:StyleID="TableHeader"> <Data ss:Type="String">Application alias</Data> </Cell> <Cell ss:StyleID="TableHeader"> <Data ss:Type="String">Application</Data> </Cell> <Cell ss:StyleID="TableHeader"> <Data ss:Type="String">Version</Data> </Cell> <Cell ss:StyleID="TableHeader"> <Data ss:Type="String">Protection technologies</Data> </Cell> <Cell ss:StyleID="TableHeader"> <Data ss:Type="String">Updates available</Data> </Cell> <Cell ss:StyleID="TableHeader"> <Data ss:Type="String">Group</Data> </Cell> <Cell ss:StyleID="TableHeader"> <Data ss:Type="String">Device</Data> </Cell> <Cell ss:StyleID="TableHeader"> <Data ss:Type="String">Object</Data> </Cell> <Cell ss:StyleID="TableHeader"> <Data ss:Type="String">Found</Data> </Cell> <Cell ss:StyleID="TableHeader"> <Data ss:Type="String">Description URL</Data> </Cell> <Cell ss:StyleID="TableHeader"> <Data ss:Type="String">IP address</Data> </Cell> </Row> <Row> <Cell ss:StyleID="TableData"> <Data ss:Type="String">Critical</Data> </Cell> <Cell ss:StyleID="TableData"> <Data ss:Type="String">Test</Data> </Cell> <Cell ss:StyleID="TableData"> <Data ss:Type="String"/> </Cell> <Cell ss:StyleID="TableData"> <Data ss:Type="String">Adobe Systems</Data> </Cell> <Cell ss:StyleID="TableData"> <Data ss:Type="String">Adobe Systems</Data> </Cell> <Cell ss:StyleID="TableData"> <Data ss:Type="String">Adobe Flash Player ActiveX</Data> </Cell> <Cell ss:StyleID="TableData"> <Data ss:Type="String">Adobe Flash Player 12 ActiveX</Data> </Cell> <Cell ss:StyleID="TableData"> <Data ss:Type="String">12.0.0.77</Data> </Cell> <Cell ss:StyleID="TableData"> <Data ss:Type="String"/> </Cell> <Cell ss:StyleID="TableData"> <Data ss:Type="String">Yes</Data> </Cell> <Cell ss:StyleID="TableData"> <Data ss:Type="String">Client</Data> </Cell> <Cell ss:StyleID="TableData"> <Data ss:Type="String">Test</Data> </Cell> <Cell ss:StyleID="TableData"> <Data ss:Type="String">C:\​Windows\​SysWOW64\​Macromed\​Flash\​</Data> </Cell> <Cell ss:StyleID="TableData"> <Data ss:Type="String">Mittwoch, 23. März 2016 10:05:38</Data> </Cell> <Cell ss:StyleID="TableData"> <Data ss:Type="String">TEst</Data> </Cell> <Cell ss:StyleID="TableData"> <Data ss:Type="String">192.168.1.1</Data> </Cell> </Row> </Table> </Worksheet> </Workbook>

    Danke im voraus für die Antwort...

    Freitag, 9. Juni 2017 08:28

Antworten

  • Kann es sein, dass Du beim Hier-her-Kopieren einen Sequenzfehler eingebaut hast? Zeile 54 sieht irgendwie "doppelt" aus.

    ... aber davon abgesehen .... sollte es nicht so funktionieren?

    $xml.workbook.worksheet | Where-Object {$_.Name -eq 'Details'} 

    Grüße - Best regards

    PS:> (79,108,97,102|%{[char]$_})-join''

    • Als Antwort markiert todomati Freitag, 9. Juni 2017 11:10
    Freitag, 9. Juni 2017 10:21
  • Hallo

    Danke vilemals für die rasche Antwort...

    Funktioniert so...Habe was ähnliches probiert gehabt habe aber vermutlich nur im $XML.workbook gesucht anstatt $xml.workbook.worksheet...

    • Als Antwort markiert todomati Freitag, 9. Juni 2017 11:10
    Freitag, 9. Juni 2017 11:10

Alle Antworten

  • Kann es sein, dass Du beim Hier-her-Kopieren einen Sequenzfehler eingebaut hast? Zeile 54 sieht irgendwie "doppelt" aus.

    ... aber davon abgesehen .... sollte es nicht so funktionieren?

    $xml.workbook.worksheet | Where-Object {$_.Name -eq 'Details'} 

    Grüße - Best regards

    PS:> (79,108,97,102|%{[char]$_})-join''

    • Als Antwort markiert todomati Freitag, 9. Juni 2017 11:10
    Freitag, 9. Juni 2017 10:21
  • Hallo

    Danke vilemals für die rasche Antwort...

    Funktioniert so...Habe was ähnliches probiert gehabt habe aber vermutlich nur im $XML.workbook gesucht anstatt $xml.workbook.worksheet...

    • Als Antwort markiert todomati Freitag, 9. Juni 2017 11:10
    Freitag, 9. Juni 2017 11:10