2015-10-05 31 views
0

轉換XML對象爲csv後如何追加產品ID列我想拿到這款產品上市(列的標籤並不重要,對我來說不關心他們):在PowerShell中

"produit id","code","value" 
    "pdt1","123456","123456" 
    "pdt1","789012","ghijkl" 
    "pdt1","345678","mnopqr" 
    "pdt2","111111","abcdef" 
    "pdt2","789012","ghijkl" 
    "pdt2","345678","mnopqr" 
    "pdt3","123456","123456" 
    "pdt3","789012","ghijkl" 
    "pdt3","345678","mnopqr" 

$xml=[xml]@' 
    <?xml version="1.0" encoding="iso-8859-1"?> 
    <catalogue> 
    <produits> 
     <produit id="pdt1" libelle="produit 1" cat="PDT"> 
     <metas date="2015.07.24"> 
      <meta code="123456" value="123456"></meta> 
      <meta code="789012" value="ghijkl"></meta> 
      <meta code="345678" value="mnopqr"></meta> 
     </metas> 
     </produit> 
     <produit id="pdt2" libelle="produit 2" cat="PDT"> 
     <metas date="2015.07.24"> 
      <meta code="111111" value="abcdef"></meta> 
      <meta code="789012" value="ghijkl"></meta> 
      <meta code="345678" value="mnopqr"></meta> 
     </metas> 
     </produit> 
     <produit id="pdt3" libelle="produit 3" cat="PDT"> 
     <metas date="2015.07.24"> 
      <meta code="123456" value="123456"></meta> 
      <meta code="789012" value="ghijkl"></meta> 
      <meta code="345678" value="mnopqr"></meta> 
     </metas> 
     </produit> 
    </produits> 
    </catalogue> 
    '@ 

我知道如何獲得最後2列該指令:

$xml.catalogue.produits.produit.metas.meta | ConvertTo-Csv -NoTypeInformation 

這給:

"code","value" 
    "123456","123456" 
    "789012","ghijkl" 
    "345678","mnopqr" 
    "111111","abcdef" 
    "789012","ghijkl" 
    "345678","mnopqr" 
    "123456","123456" 
    "789012","ghijkl" 
    "345678","mnopqr" 

如何追加產品id列(列位置對我無關緊要)?

回答

1

您可以遍歷meta元素併爲每個元素創建一個PSObject,它通過引用其祖父母的ID來獲取產品ID。例如:

$xml.catalogue.produits.produit.metas.meta | % { New-Object psobject -property @{ id = $_.parentnode.parentnode.id; code = $_.code; value = $_.value } } | ConvertTo-Csv -NoTypeInformation 

輸出:

"code","id","value" 
"123456","pdt1","123456" 
"789012","pdt1","ghijkl" 
"345678","pdt1","mnopqr" 
"111111","pdt2","abcdef" 
"789012","pdt2","ghijkl" 
"345678","pdt2","mnopqr" 
"123456","pdt3","123456" 
"789012","pdt3","ghijkl" 
"345678","pdt3","mnopqr"