Wählen Sie nur text direkt im node, nicht im untergeordneten Knoten
Wie macht man abrufen, wird der text in einem Knoten auswählen, ohne den text in die Kinder?
<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>
In anderen Worten, ich möchte Lorem ipsum dolor sit amet.
eher als Editor's DescriptionLast updated: Lorem ipsum dolor sit amet.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der mitgelieferten XML-Dokument:
top-element
/div
hat 4 Kinder-Knoten, text-Knoten. Die ersten drei dieser viertext-node
Kinder sindwhitespace-only
. Der Letzte dieser 4text-node
Kinder ist die eine, die wollte.Verwenden:
Dies unterscheidet sich von:
Letztere kann (je nachdem, ob
whitespace-only
Knoten sind, erhalten durch den XML-parser) wählen Sie alle 4 text-Knoten, aber Sie wollen nur das Letzte von Ihnen.Eine alternative ist (wenn Sie nicht genau wissen, welche
text-node
Sie wollen):Diese wählt alle
text-node-children
von/div
sind nichtwhitespace-only
text-Knoten.descendant::
- Achse oder die//
Abkürzung. Der erste Ausdruck wählt nur einen text-Knoten: das Letzte child-text-node des/div
. die alternative wählt jeder child-text-node des/div
dass nicht nur-whitespace.//div/text()[normalize-space() and parent::div[@id='comment']]
ist in Ordnung.Wählen Sie einfach
text()
statt.
:Auf dem gegebenen XML-fragment, ergibt dies:
Wie wäre es damit :
$doc/node()[3]/text()
Annahme das $doc hat die xml.