xpath获取包含文本的节点

时间:2011-06-22 15:27:36

标签: xml xpath

我尝试在'/ doc / story / content'下搜索包含文本'Yahoo'的节点,它返回'content'节点,但我需要包含'Yahoo'或其父节点的精确文本节点

<doc>
    <story>
        <content id="201009281450332423">
            <ul>MSW NYNES NYPG1 DILMA</ul>
            <p> <k> Yahoo, made </k> it nice </p>
            <p>
               <author>-v-</author>
            </p>
        </content>
    </story>
</doc>

Xpath:"/doc/story/content[contains(., 'Yahoo')]"

2 个答案:

答案 0 :(得分:45)

由于您只需要包含文本 Yahoo 的所有textNodes,请使用以下XPath。

//text()[contains(., 'Yahoo')]

这应该只返回包含 Yahoo (区分大小写)的所有textNodes。

答案 1 :(得分:40)

您的XML格式错误。 </content></doc></story>应为</content></story></doc>

除此之外,你想要的XPath是

/doc/story/content//*[contains(., 'Yahoo')]

(选择包含文字“Yahoo”的<content>的任何后代 - 这将选择<p>