我有这个简单的XML文档。我希望尽可能使用("foo","bar")
和("baz","zab")
,select-xml
和<?xml version="1.0" encoding="UTF-8"?>
<tag>
<outer>
<a>foo</a>
<b>bar</b>
</outer>
<outer>
<a>baz</a>
<b>zab</b>
</outer>
</tag>
。是可能的,怎么样?
select-xml
我遇到的问题是select-xml
的连续调用会丢失先前调用{{1}}和AFAIK的上下文,它返回的节点顺序是未定义的,所以只是压缩两个列表似乎无法使用。或者我错了它返回的节点的顺序是文档中的顺序?
答案 0 :(得分:2)
您可以阅读文件:
$xml = [xml](Get-Content .\test.xml)
然后使用:
$xml.tag.outer
或者像这样:
foreach ($outer in $xml.tag.outer)
{
$outer.a
$outer.b
}
使用Select-Xml
:
Clear-Host
$InputText = @"
<?xml version="1.0" encoding="UTF-8"?>
<tag>
<outer>
<a>foo</a>
<b>bar</b>
</outer>
<outer>
<a>baz</a>
<b>zab</b>
</outer>
</tag>
"@
$xml = [xml]($InputText)
$nodes = Select-Xml -Xml $xml -XPath "//outer"
foreach ($node in $nodes)
{
$node.node.a
}