遍历XML文档时,遇到每个元素或属性时,我需要获取一个表示项目路径的适当XPath表达式。我不尝试使用XPath定位元素。
是否有任何具有此功能的工具或API,或可用于确定或构建路径的工具或API?我正在使用Apache XMLBeans 2.6.0解析XML并获取和使用XML模式信息。它具有一个游标,该游标允许遍历XML文档,还可以提供对DOM节点对象(org.w3c.dom.Node
)的访问。
我尝试使用它来构建当前元素(或属性)的路径,并且在简单情况下,它可以很好地工作。失败的地方是处理给定元素有多个(最大出现> 1)的情况。
作为示例,请考虑以下内容:
<A> /A
<B> /A/B
<D/> /A/B/D
<E/> /A/B/E
<F/> /A/B/F
</B>
<C> /A/C[1]
<G/> /A/C[1]/G
<H/> /A/C[1]/H[1]
<H/> /A/C[1]/H[2]
</C>
<C> /A/C[2]
<G/> /A/C[2]/G/
<H/> /A/C[2]/H
</C>
</A>
除了第二个H
元素的C
子元素之外,我的逻辑似乎可以正确处理大多数元素的XPath。由于无法理解的原因,我最终得到的元素C[1]
具有三个H
元素,而C[2]
没有任何元素。
我当前的技术是获取光标指向的元素或属性的DOM节点,向上导航父链以获得基本路径,然后尝试确定元素是否具有多个。对于元素是 M 实例之一的情况,它将获取父节点以获取所有子节点,并确定位置 N 。一直工作到上述情况。
我将尝试另一种方法,看看是否可以使它工作。如果有人必须这样做并且知道可靠地执行此操作的现有工具或算法,我将不胜感激。