作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的示例XML:
<root>
<Countries>
<Country Name="USA">
<MyFilters>
<Filter>aaa</Filter>
<Filter>bbb</Filter>
<Filter>ccc</Filter>
<Filter>ddd</Filter>
</MyFilters>
</Country>
</Countries>
</root>
<Filter>
标记,并将其值-“aaa”,“bbb”,……用于PowerShell中的后续过程。我正在使用XPath访问这些值。
[xml]$config_xml = Get-Content $config_path
$Country = $config_xml.selectnodes('/root/Countries/Country[@Name = "USA"]/MyFilters')
foreach ($Filter in $Country) {
Write-Host $Filter.InnerText
}
<Filter>
值输出给我,就像这样:
aaa bbb ccc ddd
。如何使用XPath一次获取一个过滤器?还是有一种方法可以将此输出转换为PowerShell数组对象,然后可以再次循环?
最佳答案
您的XPath查询返回<MyFilters>
节点,而不是其子节点,因此InnerText
是该节点的文本内容(即所有子节点的总和)。
如果要一次遍历一个Filter
,只需添加另一步骤以引用Filter
元素:
/root/Countries/Country[@Name = "USA"]/MyFilters/Filter
MyFilters
的子元素可能具有各种名称,则可以使用
*
:
/root/Countries/Country[@Name = "USA"]/MyFilters/*
child
是XPath中的默认轴,因此
/child::node()
与
/node()
相同。然后
node()
返回所有类型的节点(元素,文本,注释等),因此
*
在这里可能更适合,因为您只想返回元素节点。
关于xml - 遍历子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34584336/
我是一名优秀的程序员,十分优秀!