使用XPath访问注释平面层次结构

时间:2010-04-14 09:17:35

标签: xml xpath comments xml-comments

我有一个给定的XML文档(结构不能更改),并希望获得在节点上面写的注释。该文件如下:

<!--Some comment here-->    
    <attribute name="Title">Book A</attribute>
    <attribute name="Author">
       <value>Joe Doe</value>
       <value>John Miller</value>
    </attribute>
<!--Some comment here-->
    <attribute name="Code">1</attribute>

所以评论是可选的,但如果有评论,我想在每个属性上面得到评论。 使用/*/comment()[n]会给我评论n,但是对于n = 2我自然会得到第三个属性的注释,所以属性和注释之间没有任何关联任何想法? 谢谢

2 个答案:

答案 0 :(得分:1)

如果要选择attribute元素后面的注释,那么这应该有效:

/*/comment()[following-sibling::*[position()=1 and name()='attribute']]

答案 1 :(得分:0)

使用

//comment()[following-sibling::*[1][self::attribute]]

这比当前选择的答案更紧凑,更精确//缩写是必要的,因为没有提供格式良好的XML文档,并且注释节点的嵌套级别未知。