我正在尝试使用 PowerShell 2.0 将以下 XML 转换为 CSV,我可以获取一些数据,但是当尝试通过 XML 对象时,我似乎无法仅以允许我的格式获取数据做一张好 table 。
我所拥有的是这样的,有多个项目
<root type="array"> <item type="object"> <short_version type="string">11</short_version> <long_name type="string">Internet Explorer</long_name> <api_name type="string">internet explorer</api_name> <long_version type="string">11.0.9600.16384.</long_version> <latest_stable_version type="string"></latest_stable_version> <automation_backend type="string">webdriver</automation_backend> <os type="string">Windows 2012 R2</os> </item> ... </root>
要么我以 Type 结束,要么如果我尝试访问 InnerHTML,我只会得到值,但在一个长字符串中。
我到目前为止:
[xml]$convertMe = Get-Content $jsonTemp
$convertMe.SelectNodes("//item") | % { $_.InnerText }
我怎样才能得到一个很好的 CSV 格式,如:
short_version,long_name,api_name,long_version,latest_stable_version,automation_backend,os 11,Internet Explorer,internet explorer,11.0.9600.16384,,webdriver,Windows 2012 R2
最佳答案
这是一个硬编码且冗长的解决方案,但它确实有效。 :) 尝试:
$xml = [xml](Get-Content .\test.xml)
$xml.root.item | Select-Object @(
@{l="short_version";e={$_.short_version."#text"}},
@{l="long_name";e={$_.long_name."#text"}},
@{l="api_name";e={$_.api_name."#text"}},
@{l="long_version";e={$_.long_version."#text"}},
@{l="latest_stable_version";e={$_.latest_stable_version."#text"}},
@{l="automation_backend";e={$_.automation_backend."#text"}},
@{l="os";e={$_.os."#text"}}) |
Export-Csv test.csv -NoTypeInformation
测试.csv
"short_version","long_name","api_name","long_version","latest_stable_version","automation_backend","os"
"11","Internet Explorer","internet explorer","11.0.9600.16384.",,"webdriver","Windows 2012 R2"
以及替代且可能较慢的解决方案:
$xml = [xml](Get-Content .\test.xml)
#Foreach item
$xml.root.item | ForEach-Object {
$obj = New-Object psobject
$_.GetEnumerator() | ForEach-Object {
#Get all properties/elements and values
$obj | Add-Member -MemberType NoteProperty -Name $_.Name -Value $_.InnerText
}
$obj
} |
#Set property order. This also makes sure that all items exports the same properties(which a csv needs)
Select-Object short_version,long_name,api_name,long_version,latest_stable_version,automation_backend,os |
#Export to csv
Export-Csv test.csv -NoTypeInformation
关于xml - 如何使用 PowerShell 2.0 将此 XML 转换为 CSV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23409270/