Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用XPath从XML中提取同级文本?_Xml_Xpath_Powershell - Fatal编程技术网

如何使用XPath从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

我有一个简单的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</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的方式访问节点。