Получение текстовых значений из XML в Python - PullRequest
4 голосов
/ 16 сентября 2009
from xml.dom.minidom import parseString
dom = parseString(data)
data = dom.getElementsByTagName('data')

переменная 'data' возвращается как объект элемента, но я не могу на всю жизнь увидеть в документации, чтобы получить текстовое значение элемента.

Например:

<something><data>I WANT THIS</data></something>

У кого-нибудь есть идеи?

Ответы [ 2 ]

4 голосов
/ 16 сентября 2009

Таким образом, способ взглянуть на это так: «Я ХОЧУ ЭТО» на самом деле является другим узлом. Это текстовый потомок «данных».

from xml.dom.minidom import parseString
dom = parseString(data)
nodes = dom.getElementsByTagName('data')

На данный момент "node" - это NodeList, и в вашем примере в нем есть один элемент, который является элементом "data". Соответственно, элемент «data» также имеет только один дочерний элемент, который является текстовым узлом «Я ХОЧУ ЭТО».

Так что вы можете просто сделать что-то вроде этого:

print nodes[0].firstChild.nodeValue

Обратите внимание, что в случае, когда у вас есть более одного тега, называемого "data", вы должны использовать какую-то технику итерации для "узлов", а не индексировать ее напрямую.

3 голосов
/ 16 сентября 2009

Это должно сработать:

dom = parseString('<something><data>I WANT THIS</data></something>')
data = dom.getElementsByTagName('data')[0].childNodes[0].data

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

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