Получите значение Элемента с minidom с Python

100
задан Martin Thoma 14 March 2016 в 11:17
поделиться

3 ответа

Это должно просто быть

name[0].firstChild.nodeValue
144
ответ дан newbie 24 November 2019 в 04:50
поделиться

Вероятно, что-то вроде этого, если это - текстовая часть, Вы хотите...

from xml.dom.minidom import parse
dom = parse("C:\\eve.xml")
name = dom.getElementsByTagName('name')

print " ".join(t.nodeValue for t in name[0].childNodes if t.nodeType == t.TEXT_NODE)

текстовую часть узла считают узлом, сам по себе помещенным как дочерний узел того, который Вы попросили. Таким образом Вы захотите пройти всех его детей и найти все дочерние узлы, которые являются текстовыми узлами. Узел может иметь несколько текстовых узлов; например,

<name>
  blabla
  <somestuff>asdf</somestuff>
  znylpx
</name>

Вы хотите и 'blabla' и 'znylpx'; следовательно "" .join (). Вы могли бы хотеть заменить пространство приблизительно одной новой строкой, или возможно ничем.

56
ответ дан Henrik Gustafsson 24 November 2019 в 04:50
поделиться

Я знаю, что этот вопрос уже довольно старый, но я подумал, что вам будет легче с ElementTree

from xml.etree import ElementTree as ET
import datetime

f = ET.XML(data)

for element in f:
    if element.tag == "currentTime":
        # Handle time data was pulled
        currentTime = datetime.datetime.strptime(element.text, "%Y-%m-%d %H:%M:%S")
    if element.tag == "cachedUntil":
        # Handle time until next allowed update
        cachedUntil = datetime.datetime.strptime(element.text, "%Y-%m-%d %H:%M:%S")
    if element.tag == "result":
        # Process list of skills
        pass

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

Например, у вас есть имя тега и фактический текст вместе, как и следовало ожидать:

>>> element[0]
<Element currentTime at 40984d0>
>>> element[0].tag
'currentTime'
>>> element[0].text
'2010-04-12 02:45:45'e
7
ответ дан 24 November 2019 в 04:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: