如何使用XPath从XML中提取同级文本?
我有一个简单的XML文档。我想使用如何使用XPath从XML中提取同级文本?,xml,xpath,powershell,Xml,Xpath,Powershell,我有一个简单的XML文档。我想使用(“foo”,“bar”)和(“baz”,“zab”)来扩展,如果可能的话,只需选择xml。可能吗?如何可能 <?xml version="1.0" encoding="UTF-8"?> <tag> <outer> <a>foo</a> <b>bar</b> </outer> <outer> <a>baz&l
(“foo”,“bar”)
和(“baz”,“zab”)
来扩展,如果可能的话,只需选择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>
福
酒吧
巴兹
扎布
我遇到的问题是,selectxml
的连续调用会丢失上一次调用selectxml
的上下文,而且它返回的节点顺序是未定义的,因此仅压缩两个列表似乎不可用。或者我认为它返回的节点顺序与文档中的顺序是错误的吗?您可以阅读该文件:
$xml = [xml](Get-Content .\test.xml)
然后使用:
$xml.tag.outer
或者像这样:
foreach ($outer in $xml.tag.outer)
{
$outer.a
$outer.b
}
使用选择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
}
清除主机
$InputText=@”
福
酒吧
巴兹
扎布
"@
$xml=[xml]($InputText)
$nodes=选择Xml-Xml$Xml-XPath“//outer”
foreach($节点中的节点)
{
$node.node.a
}
@JPBland:很管用,太棒了!我不知道我能以类似DOM的方式访问节点。