2016-04-18 5 views
1

Ich versuche zu lernen, wie man PowerShell verwendet, um einige Aufgaben bei der Arbeit zu beschleunigen.Versuchen, Daten aus XML in ein Excel-Arbeitsblatt zu verschieben

Mein Ziel ist es, ein XML-Dokument aufzunehmen, das einige Daten zu einem Produkt auflistet und die Daten aus einem bestimmten wiederkehrenden Unterknoten in eine neue Zeile in Excel kopiert.

So ist die XML könnte wie folgt aussehen (einschließlich der „Sequenz“ Attribut):

<xml> 
    <tracks> 
    <track sequence="1"> 
     <tracktitle>StuffIWant</tracktitle> 
    </track> 
    <track sequence="2"> 
     <tracktitle>StuffIWant2</tracktitle> 
    </track> 
    <track sequence="3"> 
     <tracktitle>StuffIWant3</tracktitle> 
    </track> 
    </tracks> 
</xml> 

Und ich will jedes tracktitle nehmen und es in einer Reihe in Excel zu platzieren.

Ich bin an dem Punkt, wo ich eine bestimmte Sache in Excel platzieren kann, wie eine einzige Entität wie xml.artist.artistname, aber wenn ich den Prozess loopen möchte, um alle Spuren zu greifen, dann weiß ich nicht richtig schreibe die Schleife. Ich habe ein paar verschiedene Dinge ausprobiert, aber hier ist das, was am meisten Sinn in meinem Kopf macht ($books ist das XML-Dokument Ich arbeite mit):

$row = 5 
foreach ($track in $books.tracks) { 
    $track = $books.tracks.track.tracktitle 
    $excelworksheet.cells.item($row, 2) = $track 
    $row++ 
} 

Antwort

1
  • Sie müssen die track zugreifen -property in der XML-Datei, um das Array der Track-Elemente zu erhalten. tracks ist ein einzelner Knoten, während er mehrere track -Elemente enthält (auf die Sie als Array zugreifen können).
  • Sie verwenden nicht den aktuellen Artikel $track innerhalb Ihrer Schleife.
  • $books.tracks ist nicht gültig mit dem mitgelieferten Beispiel. Sie fehlt das xml root-Element

Try this:

$row = 5 
foreach ($track in $books.xml.tracks.track) { 
    $title = $track.tracktitle 
    $excelworksheet.cells.item($row, 2) = $title 
    $row++ 
} 
+0

Vielen Dank für die Informationen! Ich habe eine Frage - die XML-Datei, mit der ich arbeite, hat eigentlich kein '' Element, ist es noch notwendig? Ich habe es einfach in das Beispiel-XML-Setup eingefügt und vergessen, es in meine Frage einzufügen. –

+0

Auch - wie weiß das System in Ihrem Beispiel, dass $ track auf den .track-Knoten zeigt? Könnten Sie auch Zeile 3 als '$ blue = $ blue.tracktitle' geschrieben haben? Oder muss der Name tatsächlich mit dem xml-Knoten übereinstimmen? –

+0

Wenn es nicht in der realen Datei ist, dann müssen Sie nicht auf 'xml' zugreifen, aber ich musste es verwenden, da der xml-tree so in Ihrer Beispieleingabe erstellt wurde. –