如何在不选择子项中的文本的情况下检索节点中的文本?
<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>
换句话说,我想要Lorem ipsum dolor sit amet.
而不是Editor's DescriptionLast updated: Lorem ipsum dolor sit amet.
答案 0 :(得分:41)
在提供的XML文档中:
<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>
顶部元素/div
有4个子节点,它们是文本节点。这四个text-node
孩子中的前三个是whitespace-only
。这4个text-node
孩子中的最后一个是被通缉的孩子。
使用强>:
/div/text()[last()]
这与:
不同/div/text()
后者可能(取决于XML解析器是否保留whitespace-only
个节点)选择所有4个文本节点,但您只需要最后一个节点。
另一种选择是(当您不确切知道自己想要的text-node
时):
/div/text()[normalize-space()]
这会选择text-node-children
个/div
个whitespace-only
文本节点的{{1}}。
答案 1 :(得分:13)
只需选择text()
代替.
:
div/text()
在给定的XML片段上,返回:
Lorem ipsum dolor sit amet.
答案 2 :(得分:0)
这个怎么样:
$doc/node()[3]/text()
假设$ doc有xml。