【发布时间】:2017-10-11 15:24:54
【问题描述】:
所以问题是,如果我有一个只有一个元素的 XML 文件,我无法访问它,就像它是维数为 1 的数组一样。因为 PowerShell 将其读取为 System.Xml.XmlLinkedNode 而不是 System.Array .
如何强制将其读取为包含 1 个项目的数组?
读取此 XML 文件:
<batch>
<project name="test">
<locPrj>locPrj</locPrj>
<locFolder>locFolder</locFolder>
<plan name="Plan 01" exec="1" />
</project>
</batch>
不允许我称它为:
[xml]$mainXML = Get-Content -Path "C:\test.xml"
$mainXML.batch.project[0] # This returns nothing!
$mainXML.batch.project.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False XmlElement System.Xml.XmlLinkedNode
但是这个 XML,它允许我:
<batch>
<project name="test">
<locPrj>locPrj</locPrj>
<locFolder>locFolder</locFolder>
<plan name="Plan 01" exec="1" />
</project>
<project name="test2">
<locPrj>locPrj2</locPrj>
<locFolder>locFolder2</locFolder>
<plan name="Plan 01" exec="0" />
</project>
</batch>
我一直在寻找一个命令来强制为该节点创建一个数组,但我没有找到任何人。有什么想法吗?
[xml]$mainXML = Get-Content -Path "C:\test2.xml"
$mainXML.batch.project[0] # This the first project called test
$mainXML.batch.project.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
【问题讨论】:
标签: arrays xml powershell