2014-04-03 103 views
1

考虑下面的XML文件:XPath表达式

<a> 
    <b> 
    </b> 
    <c> 
     <d>content X</d> 
    </c> 
    <c> 
     <d>content Y</d> 
    </c> 
</a> 

有没有简单的方法来解析XML使每个元素都有其XPath表达式,所以我当我做一些像curl http://localhost:5000/home/content?xpath=/a/c/d[2]它承认我指的是第二个<d>标签?

如果没有简单的方法,有关如何实现这一目标的任何建议?

+0

因为XML中的每个''单元只有一个''孩子,不会有任何结果的'.../C/d [2]'。该索引应该是''而不是'',如@dirkk的回答 – har07

回答

1

是的,有。但你实际上不想要第二个<d/>元素,因为在给定的上下文中没有。如果您应用位置过滤器(即使用[2]),则意味着您需要给定的<c/>元素中的第二个元素。但每<c/>只有一个<d/>,所以你总是会产生一个空的结果。

因此,正确的XPath是:

curl http://localhost:5000/home/content?xpath=/a/c[2]/d