0

私は PowerShell を使用したばかりで、stackoverflow に参加したばかりです。XMLファイルを解析し、特定のノードをcsvファイルにエクスポートしようとするプロジェクトが進行中です。*<group>name"unique name"*.csv にエクスポートするには、ファイル内の複数のエントリから # およびメンバー タスクをエクスポートする必要があります。

XML ファイルは次の例のようになり、グループ名と関連付けるタスク # のいくつかのエントリが含まれます。

<settings><tasks><groups>
<Group Name="some name">
<Notes>Some notes here</Notes>
<Member t="task">159711687</Member>
<Member t="task">584643293</Member>
<Member t="task">465828474</Member>
<Member t="task">262255905</Member>
<Member t="task">121466829</Member>
<Member t="task">257067112</Member>
</Group>

<Group Name="some name 2">
<Notes>Testing</Notes>
<Member t="task">865485927</Member>
<Member t="task">363897901</Member>
<Member t="task">848275733</Member>
<Member t="task">471573148</Member>
<Member t="task">312701058</Member>
<Member t="task">667795378</Member>
<Member>160178363</Member>
<Member>149985003</Member>
</Group>

これまでに私は得た

$xml = [xml] (gc "\\servername\path\to\file.xml")
$xml.settings.tasks.groups.group

私も試しました| select member -expandproperty memberしかし、フォーマットが正しく返されず、明らかに名前も返されません。

私も基本的な|を試しました format-list name、member 、および format-table も結果がほとんどありません。

この初心者にとって正しい方向への指針は役に立ちます。

前もって感謝します。

4

1 に答える 1

0

あなたは正しい方向に向かっています。要素参照 (コードの 2 行目) が実際には要素の配列を返すことを覚えておく必要があります。配列を取得したら、次のようにトラバースするだけです。

[xml]$xml = gc .\groups.xml
$groups = $xml.settings.tasks.groups.Group  # $groups is an array of Group elements
foreach($i in $groups) {
    write-output $i.Name         # get the Name attribute for each Group element
    foreach($j in $i.Member) {   # $i.Member is an array of Member for each Group element
        write-output $j."#text"  # get the text contained in each Member element
    }
}
于 2013-04-05T00:39:34.047 に答える