簡體   English   中英

如何在Powershell中將列表轉換為xml?

[英]How to convert list to xml in Powershell?

我有不同的xml文件,我必須將所有不同的“item”節點組合到一個新的xml文件中。

我已經能夠獲取節點並將它們提取到列表中,但現在我很難將該列表轉換為xml文件。

我試圖將列表轉換為xml文件usint convertTo-XML,但由於某種原因,xml文件中沒有任何項目。 我檢查了清單,確實有這些項目。

$OutComId = @()
Get-ChildItem $rootFolder\$country\$projectsToCheck\$mmyyyy | ForEach-Object {
    [xml]$xml = Get-Content -Encoding UTF8 $rootFolder\$country\$projectsToCheck\$mmyyyy\$_
    $nodes = $xml.SelectNodes("//Costs")

    foreach($node in $nodes) {
        $OutComId += $node.Item
    } 
}
$exportPath = "$rootFolder\$country\$projectsToCheck\$mmyyyy"
$OutComId | ConvertTo-XML |  Out-File "$exportPath\combined.xml"

我得到一個空的xml文件

這完全是關於out-file如何處理XML變量。 要理解這一點,你需要在一個簡單的變量上測試它,假設我們有一個變量

$x="This an XML variable"

首先,我們將使用像這樣的out-file輸出這個變量

$x|out-file -path C:\\test.xml

沒有將其轉換為XML。 當然,當它作為XML文件打開時,它將是空的,但是當使用記事本編輯它時,它將顯示我們輸入的字符串。 之后我們將轉換為XML,然后像在代碼中那樣將其轉換為XML。

$xXML=$x|convertto-XML

$xXML|out-file C:\\test2.xml

和以前一樣,XML文件將為空,但在編輯文件test2.xml時,它將包含如下內容:

xml對象

--- -------

version =“1.0”encoding =“utf-8”對象

如果你在shell中輸入$xXML ,你會看到相同的結果。 因此out-file只是輸出通過管道的結果。 如果你想看到你需要鍵入$xXML.innerxml的XML表示,我更喜歡使用這些方法之一將任何XML數據保存到文件。

$xXML.save("C:\\test3.xml")

要么

$x |Export.CliXML -path "C:\\test4.xml"

因此,您只需輸入代碼,而不是代碼中的最后一行

$OutComId | Export-CliXML "$exportPath\\combined.xml"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM