Only select text directly in node, not in child nodes

后端 未结 3 1814
余生分开走
余生分开走 2021-01-30 13:06

How does one retrieve the text in a node without selecting the text in the children?

Editor\'s Descrip
相关标签:
3条回答
  • 2021-01-30 13:25

    In the provided XML document:

    <div id="comment">
          <div class="title">Editor's Description</div>
          <div class="changed">Last updated: </div>
          <br class="clear">
          Lorem ipsum dolor sit amet. 
    </div> 
    

    the top element /div has 4 children nodes that are text nodes. The first three of these four text-node children are whitespace-only. The last of these 4 text-node children is the one that is wanted.

    Use:

    /div/text()[last()]
    

    This is different from:

    /div/text()
    

    The latter may (depending on whether whitespace-only nodes are preserved by the XML parser) select all 4 text nodes, but you only want the last of them.

    An alternative is (when you don't know exactly which text-node you want):

    /div/text()[normalize-space()]
    

    This selects all text-node-children of /div that are not whitespace-only text nodes.

    0 讨论(0)
  • 2021-01-30 13:29

    How about this :
    $doc/node()[3]/text()
    Assuming $doc has the xml.

    0 讨论(0)
  • 2021-01-30 13:50

    Just select text() instead of .:

    div/text()
    

    On the given XML fragment, this returns:

    Lorem ipsum dolor sit amet.
    
    0 讨论(0)
提交回复
热议问题