gpt4 book ai didi

xml - PowerShell 连接多个 XML 文件

转载 作者:行者123 更新时间:2023-12-02 23:53:00 25 4
gpt4 key购买 nike

不知道为什么我在这方面遇到了这么困难的时间,但我想不出如何将多个 XML 文件与包的总体包装器结合起来,以便我可以轻松地处理数据。

XML 文件:

<package>
<Application>Java</Application>
<Version>8.0.2010.9</Version>
<InstallType>Install</InstallType>
<Installers>
<Windows10>
<Architecture>
<x86>
<File1>
<FileName>jre-8u201-windows-i586.exe</FileName>
<Parameters>/s</Parameters>
</File1>
</x86>
<x64>
<file1>
<FileName>jre-8u201-windows-x64.exe</FileName>
<Parameters>/s</Parameters>
</file1>
</x64>
<AMD64>
<File1>
<FileName></FileName>
<Parameters></Parameters>
<CustomSuccessCodes></CustomSuccessCodes>
<CustomErrorCodes></CustomErrorCodes>
</File1>
</AMD64>
</Architecture>
</Windows10>
</Installers>
</package>

我有什么:

$Path = "D:\Desktop\AutoInstall\Packages\Java v8u201\package.xml"
$Xml = New-Object Xml
#$Xml.AppendChild($XML.CreateXmlDeclaration("1.0", "UTF-8", $null)) | Out-Null
$Xml.AppendChild($Xml.CreateElement("Packages")) | Out-Null

$newxml = [xml](Get-Content $Path)
$Xml.ImportNode($newxml.get_DocumentElement(), $true) | Out-Null

$newNode = $newxml.ImportNode($Xml.get_DocumentElement(), $true)
$newxml.DocumentElement.AppendChild($newNode) | Out-Null
$Xml.packages

当我输入 $xml.packages 时,它显示为空,而它应该有这样的结果:

Application Version  InstallType Installers----------- -------  ----------- ----------Java        8.2.9.23 Install     Installers

最佳答案

您的导入方向错误。您正在将您创建的新 XML 文档 ( $xml ) 导入到您从 XML 文件加载的 XML 文档中。如果你运行 $newxml.Save([Console]::Out)你会看到一个节点 <Packages />收盘前</package> .

<package>
<Application>Java</Application>
<Version>8.0.2010.9</Version>
<InstallType>Install</InstallType>
<Installers>
...
</Installers>
<Packages /> <!-- right here -->
</package>

此语句将导入 $newxml如你所愿:

$xml.ImportNode($newxml.get_DocumentElement(), $true) | Out-Null

但是您立即丢弃结果 (Out-Null),然后以相反的方式进行导入:

$newNode = $newxml.ImportNode($xml.get_DocumentElement(), $true)

这会做你想做的:

$path = 'D:\Desktop\AutoInstall\Packages\Java v8u201\package.xml'

# create new XML document with <Packages> root node
$xml = New-Object Xml
$xml.AppendChild($xml.CreateElement('Packages')) | Out-Null

# load package XML from file and import it into $xml
$package = New-Object Xml
$package.Load($path)
$imported = $xml.ImportNode($package.DocumentElement, $true)
$xml.DocumentElement.AppendChild($imported) | Out-Null

$xml.Save([Console]::Out)

关于xml - PowerShell 连接多个 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54272101/

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