2013-06-28 112 views
0

我需要幫助來搜索多個字符串的多個XML文件,然後將結果輸出到csv或txt文件中。這些xml文件都是相同的格式。Powershell:搜索多個字符串多個XML並將結果輸出到csv

此刻,我可以只使用提取單個XML單一字符串如下:

$xml = [xml](Get-Content 'C:\App\test.xml') 
$xml.application.stage1.c_firstname 

它返回的名字,我需要能夠返回c_surnamec_userid並輸出到CSV文件(理想或多個XML

示例XML文件中的文本):

<?xml version="1.0" encoding="UTF-8" ?> 
<application> 
    <stage1> 
    <c_product_name>Test</c_product_name> 
    <c_firstname>Bill</c_firstname> 
    <c_surname>Gates</c_surname> 
    </stage1> 
    <stage5> 
    <c_number>12345TEST</c_number> 
    </stage5> 
</application> 

回答

0

我會加載循環中的XML文件,並使用XPath表達式從相關節點中提取文本。這樣的事情:

Get-ChildItem "C:\path\to\*.xml" ` 
    | % { Get-Content $_ | Out-String } ` 
    | select @{n="c_firstname";e={$_ | Select-Xml "//c_firstname/text()"}}, 
      @{n="c_userid";e={$_ | Select-Xml "//c_userid"}} ` 
    | Export-Csv "C:\output.csv" -NoTypeInformation 
+1

請避免張貼「謝謝」評論。在SO上表達感謝的正確方式是upvote和/或[接受](http://meta.stackexchange.com/a/5235)答案。 –

0

我不知道我得到了你的問題的權利,但: 如果你有一個XML輸入,如:

<persons> 
<person> 
<firstname>Mickey</firstname> 
<lastname>Mouse</lastname> 
</person> 
<person> 
<firstname>Donald</firstname> 
<lastname>Duck</lastname> 
</person> 
</persons> 

保存在d:\ TEMP \ Input.xml中

然後命令

$xml = [xml](get-Content d:\temp\input.xml) 
$csv = $xml.persons.person | Convertto-CSV -NoTypeInformation 

應該做的伎倆。

+0

嗨亞歷克斯 - 對不起,我不認爲我提出了明確的問題。 –

+0

嗨亞歷克斯 - 對不起,我不認爲我問題明確。該XML文件看起來如下:<?XML版本= 「1.0」 編碼= 「UTF-8」?> - - 測試 比爾 蓋茨 12345TEST 我需要提取從多個XML的將名字,姓氏和c_number到CSV爲TXT,是否有意義。謝謝 –

+0

@SayfulAhmed請避免在評論中張貼代碼,因爲它往往幾乎不可讀。而是用它更新你的問題(這次我冒昧地爲你做了這個)。 –

相關問題