2010-01-21 4 views
1

Я использую xml.dom.mindom в Python и получил книжный узел в нижнем XML-дереве. Я хочу получить список всех дочерних узлов. В этом случае, я думаю, будет только один.Python XML Parsing Confusion

<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" 

Джонатан Благодарения и

ответ

3

Первый текстовый узел является пробел между < Книга > и < Название >. Во-вторых, пробелы между </Название > и </Книги >

+0

Первый текстовый узел - это пробел между < Книга> и < Заголовок>. Второй пробел между </Title> и </Book> – Sukasa

0

Каковы эти случайные узлы #text?

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

Как получить имя_таблицы и значение для каждого из законных узлов?

Петля над дочерними узлами, игнорируя те элементы, которые не являются элементами.

Я хочу получить список пар ключ-> значение для каждого из узлов в книге.

book= {} 
for child in bookNode.childNodes: 
    if child.nodeType==child.ELEMENT_NODE: 
     book[child.tagName]= '' if child.firstChild is None else child.firstChild.data 

Это предполагает, что каждый элемент содержит только один текстовый узел.