Подтвердить что ты не робот

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')]"

4b9b3361

Ответ 1

Ваш XML некорректен. </content></doc></story> должен быть </content></story></doc>.

Кроме того, XPath, который вам нужен, будет

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

(выберите любого потомка <content>, который содержит текст "Yahoo" - это выберет <p>)

Ответ 2

Поскольку вам нужны только все текстовые ноты, содержащие текст Yahoo, используйте следующий XPath.

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

Это должно возвращать вам все текстовые ноды, содержащие только Yahoo (с учетом регистра).