【发布时间】:2011-12-14 14:54:48
【问题描述】:
我有一个由容器节点组成的 XML,它包含各种子节点,包括其他容器节点。示例 XML 看起来像...
<CONTAINER>
<SEARCHFOR />
<ITEM/>
<ITEM/>
<ITEM/>
<ITEM/>
<ITEM/>
<CONTAINER>
<SEARCHFOR />
<ITEM/>
<ITEM/>
<CONTAINER>
<SEARCHFOR />
<ITEM id="1" />
<ITEM/>
<ITEM/>
<CONTAINER>
<ITEM id="2" />
</CONTAINER>
</CONTAINER>
</CONTAINER>
</CONTAINER>
我想找到最接近(在范围内)id=2 的 ITEM 的 SEARCHFOR 节点。 SEARCHFOR 节点可以是 ITEM 的前同级或祖先 CONTAINER 节点的子级。我有一个 XPath 表达式,可以定位范围内与条件匹配的所有 SEARCHFOR 节点,但我似乎无法让它只返回最近的单个元素。
//ITEM[@id="2"]/ancestor::CONTAINER/SEARCHFOR
我正在 Sketchpath 中进行测试,并将在 Delphi 中使用可以处理 XPath 2.0 的 XML 解析器来实现它,这样语法也是可以接受的。我可以在代码中通过获取我的结果并使用 Delphi 来获得感兴趣的结果,但如果可能的话,我真的需要在 XPath 本身内完成此操作以实现我的实现。任何帮助表示赞赏。
谢谢, 迈克尔
【问题讨论】: