Я создаю интерфейс GUI для Eve Online API на Python.
Я успешно извлек XML-данные с их сервера.
Я пытаюсь получить значение из узла с именем «имя»:
from xml.dom.minidom import parse
dom = parse("C:\\eve.xml")
name = dom.getElementsByTagName('name')
print name
Кажется, он находит узел, но результат ниже:
[<DOM Element: name at 0x11e6d28>]
Как я могу заставить его распечатать значение узла?
Ответы:
Это должно быть просто
источник
Наверное, что-то вроде этого, если вам нужна текстовая часть ...
Текстовая часть узла считается самим узлом, размещенным как дочерний узел того, который вы просили. Таким образом, вы захотите просмотреть всех его дочерних узлов и найти все дочерние узлы, которые являются текстовыми узлами. Узел может иметь несколько текстовых узлов; например.
Вам нужны как blabla, так и znylpx; следовательно, "" .join (). Возможно, вы захотите заменить пробел новой строкой или около того, или, возможно, ничем.
источник
вы можете использовать что-то вроде этого. у меня получилось
источник
Я знаю, что этот вопрос сейчас довольно старый, но я подумал, что вам будет легче с ElementTree
Я знаю, что это не супер-специфично, но я только что обнаружил это, и пока что намного проще разобраться, чем думать о минидоме (поскольку так много узлов, по сути, являются пустым пространством).
Например, у вас есть имя тега и фактический текст вместе, как и следовало ожидать:
источник
Приведенный выше ответ правильный, а именно:
Однако для меня, как и для других, моя ценность была ниже по дереву:
Чтобы найти это, я использовал следующее:
Выполнение этого для моего простого файла SVG, созданного с помощью Inkscape, дало мне:
Я использовал xml.dom.minidom, различные поля описаны на этой странице, MiniDom Python.
источник
У меня был похожий случай, у меня сработало:
name.firstChild.childNodes [0] .data
XML должен быть простым, и это действительно так, и я не знаю, почему мини-дом Python сделал это так сложно ... но именно так это сделано
источник
Вот немного измененный ответ Хенрика для нескольких узлов (т.е. когда getElementsByTagName возвращает более одного экземпляра)
источник
На вопрос дан ответ, мой вклад заключается в разъяснении одной вещи, которая может запутать новичков:
Некоторые из предложенных и правильных ответов использовались,
firstChild.data
а другие использовалисьfirstChild.nodeValue
вместо них. Если вам интересно, в чем разница между ними, вы должны помнить, что они делают то же самое, потому чтоnodeValue
это просто псевдоним дляdata
.Ссылку на мое заявление можно найти как комментарий к исходному коду minidom :
источник
Это дерево, и в нем могут быть вложенные элементы. Пытаться:
источник