gpt4 book ai didi

基于 child 和/或孙子的 parent 的 XML 选择

转载 作者:行者123 更新时间:2023-12-03 16:06:28 24 4
gpt4 key购买 nike

我正在搜索一个 XPath 字符串(用于 VBA Excel),它可以查找特定级别上的所有节点,并且仅在它们具有特定(大)子节点的情况下才返回。不管嵌套有多“深”。关系:我不知道特定 child 的嵌套有多深,因此我无法制定固定路径。

在以下示例的情况下。我正在搜索根目录下的所有节点 '' 并且有任何包含名称 'Test' 的子节点

XML 字符串:

<Program>
<AA name="1"/>
<BB name="2">
<CC name="Test"/>
</BB>
<DD name="Test"/>
<EE name="3">
<FF name="4">
<GG name="Test"/>
</FF>
</EE>
</Program>

要求的选择:
Item(0) = <BB name="2">
Item(1) = <DD name="Test">
Item(2) = <EE name="3">

下面的 XPath 表达式给出了 Program 下的节点
xmlDoc.selectNodes("/Program/*")

以下 XPath 表达式给出了包含名称 Test 的节点
xmlDoc.selectNodes("//*[@name="Test"]")

我需要的不是两条路径的“联合”,而是“重叠”。有人知道怎么做吗?

最佳答案

以下 XPath 表达式选择您需要的内容:

/Program/*[.//@name='Test']

它获取 Program 的所有直系子级然后选择具有 name 的那些 'Test' 的属性值或包含这样做的后代。

此表达式的更详细且可能更易读的版本是:
 /Program/*[descendant-or-self::*/attribute::name='Test']

因此,您的 VBA 代码可能如下所示:
mlDoc.selectNodes("/Program/*[descendant-or-self::*/attribute::name='Test']")

关于基于 child 和/或孙子的 parent 的 XML 选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13358621/

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