开发者

Using XPath to access comments a flat hierachy

开发者 https://www.devze.com 2022-12-27 08:15 出处:网络
I have a given XML document (structure can not be changed) and want to get th开发者_如何学编程e comments that are written above the nodes. The document looks like this:

I have a given XML document (structure can not be changed) and want to get th开发者_如何学编程e comments that are written above the nodes. The document looks like this:

<!--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>

So comments are optional, but if there is one, I want to get the comment above each attribute. Using /*/comment()[n] would give me comment n, but for n=2 I would naturally get the comment of the third attribute, so there is no connection between attributes and comments Any ideas? Thanks


If you want to select the comments that are followed by an attribute element, then this should work:

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


Use:

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

This is more compact and precise than the currently selected answer. The // abbreviation is necessary, since no wellformed XML document was provided and the nesting level of the comment nodes is not known.

0

精彩评论

暂无评论...
验证码 换一张
取 消