如何使用XPath从XML中提取兄弟文本?

时间:2011-10-31 09:20:52

标签: xml xpath powershell

我有这个简单的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的上下文,它返回的节点顺序是未定义的,所以只是压缩两个列表似乎无法使用。或者我错了它返回的节点的顺序是文档中的顺序?

1 个答案:

答案 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
}