Xpath, чтобы получить Node содержащий текст
Я попытался найти узлы, содержащие текст "Yahoo" в разделе "/doc/story/content", он возвращает "content" node, но мне нужен точный текст node, который содержит "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')]"
Ответы
Ответ 1
Ваш XML некорректен. </content></doc></story>
должен быть </content></story></doc>
.
Кроме того, XPath, который вам нужен, будет
/doc/story/content//*[contains(., 'Yahoo')]
(выберите любого потомка <content>
, который содержит текст "Yahoo" - это выберет <p>
)
Ответ 2
Поскольку вам нужны только все текстовые ноты, содержащие текст Yahoo, используйте следующий XPath.
//text()[contains(., 'Yahoo')]
Это должно возвращать вам все текстовые ноды, содержащие только Yahoo (с учетом регистра).