Я немного изменил ваш исходный файл XML, так что Предложение содержит два дочерних элемента:
<Instance>
<TextContent>
<Sentence>Hello, my <Thing>name</Thing> is John and his <Thing>name</Thing> is Tom.</Sentence>
</TextContent>
</Instance>
Чтобы найти Предложение элемент, выполните: st = xroot.find('.//Sentence')
.
Затем определите следующий генератор:
def allTextNodes(root):
if root.text is not None:
yield root.text
for child in root:
if child.tail is not None:
yield child.tail
Чтобы просмотреть список всех текстовых узлов прямого потомка, выполните:
lst = list(allTextNodes(st))
Результат:
['Hello, my ', ' is John and his ', ' is Tom.']
Но чтобы получить объединенный текст как одну переменную, запустите:
txt = ''.join(allTextNodes(st))
получив: Hello, my is John and his is Tom.
(обратите внимание на двойные пробелы, " окружающие "оба опущены Вещи элементов.