获取当前元素/属性的XPath表达式

时间:2018-07-27 12:43:42

标签: xml xpath

遍历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 。一直工作到上述情况。

我将尝试另一种方法,看看是否可以使它工作。如果有人必须这样做并且知道可靠地执行此操作的现有工具或算法,我将不胜感激。

0 个答案:

没有答案