Я использую xml.dom.mindom в Python и извлекли книгу node в нижнем XML-древе. Я хочу получить список всех дочерних узлов. В этом случае, я думаю, будет только один.
<Book>
<Title>Why is this so hard</Title>
</Book
Когда я звоню:
nodeList = bookNode.childNodes
print "nodeList has " + str(nodeList.length) + " elements"
for node in nodeList:
print "Found a " + node.nodeName + " node"
Я получаю следующий вывод:
nodeList has 3 elements
Found a #text node
Found a Book node
Found a #text node
Что это за случайные узлы #text? Как получить tagName и значение для каждого из легитимных узлов? Я хочу получить список пар ключ- > значение для каждого из узлов в книге. Я не хочу использовать getElementsByName, потому что раньше я не буду знать все теги tagNames.
Book -> "Why is this so hard"
Благодарения и Джонатан
Первый текст node - это пробел между <Book> и < Название > . Второй - это пробел между </Title> и </Book>
Что представляют собой эти случайные узлы #text?
Вряд ли случайные, это текстовые узлы, представляющие пробелы, которые вы помещаете между тегами. XML должен помнить об этом, иначе документ будет работать вместе в одной нечитабельной строке при повторной инициализации.
Как получить tagName и значение для каждого из легитимных узлов?
Прокрутите дочерние узлы, игнорируя те, которые не являются элементами.
Я хочу получить список пар ключ- > значение для каждого из узлов в книге.
book= {}
for child in bookNode.childNodes:
if child.nodeType==child.ELEMENT_NODE:
book[child.tagName]= '' if child.firstChild is None else child.firstChild.data
Это предполагает, что каждый элемент содержит только один текст node.