2013-04-04 91 views
0

我是相當新的使用PowerShell,只是加入了stackoverflow。 我有一個項目正在嘗試解析XML文件並將某些特定節點導出到csv文件。 我需要*<group>name"unique name"*,並將文件中多個條目導出的成員任務#導出到.csv。PowerShell XML解析和導出

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 

我也試過|選擇成員-expandproperty成員但它不會正確返回格式,顯然也不會返回該名稱。

我也試過基本|格式列表名稱,成員 和格式表也很少有結果。

任何在這個新手正確的方向指針會有所幫助。

在此先感謝。

回答

0

你正朝着正確的方向前進。你只需要記住你的元素引用(代碼中的第二行)實際上返回了一個元素數組。一旦你有陣列,你只需要像這樣遍歷它:

[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 
    } 
}