Как извлечь текст вне тегов XML - PullRequest
5 голосов
/ 29 июля 2011

Я хочу извлечь текст вне тегов.Например,

<body>
    This is an exmaple
    <p>
        blablabla
    </p>
    <references>
        refer 1
        refer 2
    </references>
</body>

Я хочу получить текст «Это пример» только без текста в других тегах (p или ссылка).Я пробовал несколько методов, но не работает.Any1 может помочь?Большое спасибо.

Ответы [ 2 ]

8 голосов
/ 29 июля 2011

Вы должны думать, что текст внутри тега похож на узел.Текстовый узел извлекается с использованием тестового узла text().Пример.Дано:

<body>
    This is an exmaple
    <p>
    blablabla
    <\p>
    <references>
        refer 1
        refer 2
    <\references>
    another example
<\body>

XPath:

"/body/text()"

Извлечет все дочерние текстовые узлы body, например «Это пример» и «Другой пример», а:

"/body/text()[1]"

найдет только первое «Это пример».Если вы хотите использовать все текстовые узлы-потомки, вы можете использовать:

"/body//text()"

или, вы хотите, чтобы все текстовые узлы находились внутри первого p:

"/body/p[1]//text()"
2 голосов
/ 29 июля 2011

Используйте этот XPath: /body/text(). Он выберет This is an exmaple.

...