我需要帮助来搜索多个字符串的多个xml文件,然后将结果输出到csv或txt文件中。 xml文件都采用相同的格式。
目前我只能使用以下内容从单个xml中提取单个字符串:
$xml = [xml](Get-Content 'C:\App\test.xml')
$xml.application.stage1.c_firstname
返回名称,我需要能够返回c_surname
和c_userid
并将其输出到多个xml上的csv文件(理想情况下或文本中)
示例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 :(得分: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
应该做的伎俩。
答案 1 :(得分: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