我正在制作一个解析XML文件的Python程序。我需要在NodeList上迭代,但是使用“for node in NodeList”语法时遇到问题。
下面是代码示例:
docToInclude = parse(node.getAttribute("file"))
print ("childNode count : " , len(docToInclude.documentElement.childNodes))
print ("childNodes : " , docToInclude.documentElement.childNodes)
print("")
for i in range(0, len(docToInclude.documentElement.childNodes)):
print ("i = ", i , "nodeName = " + docToInclude.documentElement.childNodes[i].nodeName)
print("")
for elementNode in docToInclude.documentElement.childNodes :
print ("node name : " , elementNode.nodeName)
node.parentNode.insertBefore(elementNode, insertPosition)
输出如下:
childNode count : 3
childNodes : [<DOM Text node "'\n\n\t'">, <DOM Element: messageList at 0x3a4e570>, <DOM Text node "'\n\n'">]
i = 0 nodeName = #text
i = 1 nodeName = messageList
i = 2 nodeName = #text
node name : #text
node name : #text
如果我在NodeList语法中使用for节点进行迭代,将跳过一个元素。 你知道这个问题的起因吗?
appendChild()将执行以下操作:
我只是从代码中学习,使用tuple()可以做到这一点。
在迭代元素时,您正在将元素移出
childNodes
。这改变了childNodes
列表:您必须迭代列表的副本;这里我使用
[:]
切片符号创建列表的副本:不过,还是帮你自己一个大忙,改用ElementTree API;该API远比XML DOM API更具pythononic性,使用起来也更容易:
相关问题 更多 >
编程相关推荐