【发布时间】:2020-03-15 08:52:25
【问题描述】:
一直试图从多个 XML 文件中提取某些数据到一个 csv 文件中。编码员不多,但我已经能够使用 powershell 并获得一些所需的输出,但是脚本只返回第一个 XML 条目并停止。请参阅下面的 XML 输入(所有 XML 都遵循相同的输入)、代码和所需的输出,我也将所需的输出放在下面:
输入
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<Base Date='Update' Description='Test'>
< name='Test'>
<car>
<cars CarID='45678901987612923'>
<Information>
<Info CarName='Audi' CarColour='Blue'/>
<Info CarName='BMW' CarColour='Pink'/>
</Information>
<Owners>
<Owner OwnerStatus='Current'>
<OwnerInfo OwnerName='Joe Bloggs' OwnerAge='35'/>
</OwnerInfo>
</Owner>
</Owners>
</cars>
<cars CarID='87654346789012678'>
<Information>
<Info CarName='Audi' CarColour='Yellow'/>
<Info CarName='BMW' CarColour='Green'/>
</Information>
<Owners>
<Owner OwnerStatus='Current'>
<OwnerInfo OwnerName='Anne Smyth' OwnerAge='42'/>
</OwnerInfo>
</Owner>
</Owners>
</cars>
</car>
...
...
...
</name>
</Base>
代码
$items = Get-ChildItem C:\*.xml
foreach ($item in $items) {[xml]$xml = (Get-Content $item)
$cars = $xml.Base.name.car.cars.Information.Info.CarColour
$owner = $xml.Base.name.car.cars.Owners.Owner.OwnerInfo.OwnerName
$results = New-Object PSObject -Property @{
Audi= $cars[0]
BMW= $cars[1]
Owner= $owner[0]}
$results | Export-Csv -Path C:\test.csv -NoTypeInformation -Append}
当前输出
Audi BMW Owner
Blue Pink Joe Bloggs
期望的输出
Audi BMW Owner
Blue Pink Joe Bloggs
Yellow Green Anne Smyth
如上所述,以上适用于相同格式的多个xml,我只是不知道如何为每个xml的每个部分填充它,所以我可以得到一个完整的列表。
任何帮助将不胜感激!
【问题讨论】:
标签: xml powershell parsing