gpt4 book ai didi

xml - 遍历子节点

转载 作者:行者123 更新时间:2023-12-03 16:59:35 25 4
gpt4 key购买 nike

这是我的示例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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com