繁体   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