Извлечь текст из узла XML, который идет после дочернего узла - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь проанализировать документ XML с узлами, которые имеют некоторый текст, затем объявить дочерний узел, а затем иметь больше текста.Например, второй элемент «post» в XML ниже:

<?xml version="1.0"?>
<data>
    <post>
        this is some text
    </post>
    <post>
        here is some more text
        <quote> and a nested node </quote>
        and more text after the nested node
    </post>
</data>

Я использовал следующий код, чтобы попытаться распечатать текст каждого узла:

import xml.etree.ElementTree as ET
tree = ET.parse('test.xml')
root = tree.getroot()

for child in root:
    print (child.text)

Но, к сожалению,единственный вывод:

this is some text
here is some more text

Обратите внимание, что мне не хватает текста and more text after the nested node.

Итак,

  1. Это допустимый XML?
  2. Если да, как я могу использовать ElementTree или другую библиотеку XML Python для достижения желаемого анализа?
  3. Если нет, есть ли какие-либо предложения по синтаксическому анализу XML, кроме написания моего собственного анализатора?

1 Ответ

0 голосов
/ 24 мая 2018

Ах, нашел ответ здесь: Как я могу перебирать дочерние текстовые узлы (не потомки) в ElementTree?

В основном я должен использовать атрибут .tail дочернего узлачтобы получить доступ к тексту, который ранее отсутствовал.

...