xpath для получения узла, содержащего текст - PullRequest
38 голосов
/ 22 июня 2011

Я попытался найти узлы, содержащие текст «Yahoo» в «/ doc / story / content», он возвращает узел «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 ]

45 голосов
/ 22 июня 2011

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

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

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

41 голосов
/ 22 июня 2011

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

Кроме того, XPath, который вы хотели бы получить, -

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...