gpt4 book ai didi

xml - 使用 powershell 将带有命名空间的 XML 转换为 CSV

转载 作者:数据小太阳 更新时间:2023-10-29 03:01:51 24 4
gpt4 key购买 nike

我有这个 XML 文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns3:BOX xmlns="urn:loc.gov:item"
xmlns:ns2="urn:loc.gov:box"
xmlns:ns3="http://www.example.com/inverter"
xmlns:ns4="urn:loc.gov:xyz">
<ns3:Item>
<Description>ITEM1</Description>
<PackSizeNumeric>6</PackSizeNumeric>
<ns2:BuyersItemIdentification>
<ID>75847589</ID>
</ns2:BuyersItemIdentification>
<ns2:CommodityClassification>
<CommodityCode>856952</CommodityCode>
</ns2:CommodityClassification>
<ns2:AdditionalItemProperty>
<Name>Weight</Name>
<Value>0</Value>
</ns2:AdditionalItemProperty>
<ns2:AdditionalItemProperty>
<Name>Tare</Name>
<Value>0</Value>
</ns2:AdditionalItemProperty>
<ns2:ManufacturerParty>
<ns2:PartyIdentification>
<ID>847532</ID>
</ns2:PartyIdentification>
</ns2:ManufacturerParty>
</ns3:Item>
<ns3:Item>
<Description>ITEM2</Description>
<PackSizeNumeric>10</PackSizeNumeric>
<ns2:BuyersItemIdentification>
<ID>9568475</ID>
</ns2:BuyersItemIdentification>
<ns2:CommodityClassification>
<CommodityCode>348454</CommodityCode>
</ns2:CommodityClassification>
<ns2:AdditionalItemProperty>
<Name>Weight</Name>
<Value>0</Value>
</ns2:AdditionalItemProperty>
<ns2:AdditionalItemProperty>
<Name>Tare</Name>
<Value>0</Value>
</ns2:AdditionalItemProperty>
<ns2:ManufacturerParty>
<ns2:PartyIdentification>
<ID>7542125</ID>
</ns2:PartyIdentification>
</ns2:ManufacturerParty>
</ns3:Item>
</ns3:BOX>

我正在尝试将其转换为 CSV 文件。

我得到了内容:

[xml]$inputFile = Get-Content test.xml

然后我导出到 CSV:

$inputfile.BOX.childnodes | Export-Csv "Stsadm-EnumSites.csv" -NoTypeInformation -Delimiter:";" -Encoding:UTF8

我得到了 DescriptionPackSizeNumeric 字段,但没有其他字段:

"Description";"PackSizeNumeric";"BuyersItemIdentification";"CommodityClassification";"AdditionalItemProperty";"ManufacturerParty"
"ITEM1";"6";"System.Xml.XmlElement";"System.Xml.XmlElement";"System.Object[]";"System.Xml.XmlElement"
"ITEM2";"10";"System.Xml.XmlElement";"System.Xml.XmlElement";"System.Object[]";"System.Xml.XmlElement"

获取其他命名空间中包含的字段的最佳方式是什么?

我想要这个

"Description";"PackSizeNumeric";"BuyersItemIdentification";"CommodityClassification";"Weight";"Tare";PartyIdentification
"ITEM1";"6";"75847589";"856952";"0";"0";"847532"
"ITEM2";"10";"9568475";"348454";"0";"0";"7542125"

最佳答案

Select-ObjectSelect-Xml 的组合似乎工作得很好:

$ns = @{
item="urn:loc.gov:item"
ns2="urn:loc.gov:box"
ns3="http://www.example.com/inverter"
ns4="urn:loc.gov:xyz"
}

$doc = New-Object xml
$doc.Load("test.xml")

$doc.BOX.ChildNodes | Select-Object -Property `
Description,`
PackSizeNumeric, `
@{Name="BuyersItemIdentification_ID"; Expression={$_.BuyersItemIdentification.ID}}, `
@{Name="CommodityClassification_CommodityCode"; Expression={$_.CommodityClassification.CommodityCode}}, `
@{Name="Weight"; Expression={Select-Xml -Namespace $ns -Xml $_ -XPath "./ns2:AdditionalItemProperty[item:Name = 'Weight']/item:Value"}}, `
@{Name="Tare"; Expression={Select-Xml -Namespace $ns -Xml $_ -XPath "./ns2:AdditionalItemProperty[item:Name = 'Tare']/item:Value"}}, `
@{Name="ManufacturerParty_ID"; Expression={$_.ManufacturerParty.PartyIdentification.ID}} `
| Export-Csv "Stsadm-EnumSites.csv" -NoTypeInformation -Delimiter:";" -Encoding:UTF8

结果(Stsadm-EnumSites.csv)

"Description";"PackSizeNumeric";"BuyersItemIdentification_ID";"CommodityClassification_CommodityCode";"Weight";"Tare";"ManufacturerParty_ID""ITEM1";"6";"75847589";"856952";"0";"0";"847532""ITEM2";"10";"9568475";"348454";"0";"0";"7542125"

关于xml - 使用 powershell 将带有命名空间的 XML 转换为 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30575274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com