0

我需要帮助来搜索多个 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>
4

2 回答 2

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

应该做的伎俩。

于 2013-06-28T10:24:58.183 回答
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
于 2013-06-28T11:31:42.203 回答