Python XML解析混乱

时间:2010-01-21 23:50:26

标签: python xml

我在Python中使用xml.dom.mindom,并在下面的XML树中检索了book节点。我想获得所有子节点的列表。在这种情况下,我认为只会有一个。

<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和值?我想得到Book下每个节点的key-&gt;值对列表。我不想使用getElementsByName,因为我不会提前知道所有的tagNames。

Book -> "Why is this so hard"

Thanks- 乔纳森

2 个答案:

答案 0 :(得分:3)

第一个文本节点是&lt; Book&gt;之间的空格。和&lt; Title&gt;。第二个是&lt; / Title&gt;之间的空格。和&lt; / Book&gt;

答案 1 :(得分:0)

  

这些随机的#text节点是什么?

几乎没有随机,它们是表示您在标签之间放置的空白的文本节点。 XML必须记住这一点,否则当文档重新序列化时,文档将在一个不可读的行中一起运行。

  

如何获取每个合法节点的tagName和值?

遍历子节点,忽略那些不是元素的节点。

  

我想获得Book下的每个节点的key-&gt;值对列表。

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

这假设每个元素只包含一个文本节点。