通过一些调整运行您的 Python 代码:
from xml.dom import minidom
Test_file = open('C:/test_file.xml','r')
xmldoc = minidom.parse(Test_file)
Test_file.close()
def printNode(node):
print node
for child in node.childNodes:
printNode(child)
printNode(xmldoc.documentElement)
将此示例输入作为 test_file.xml:
<a>
<b>testing 1</b>
<c>testing 2</c>
</a>
产生这个输出:
<DOM Element: a at 0xbc56e8>
<DOM Text node "u'\n '">
<DOM Element: b at 0xbc5788>
<DOM Text node "u'testing 1'">
<DOM Text node "u'\n '">
<DOM Element: c at 0xbc5828>
<DOM Text node "u'testing 2'">
<DOM Text node "u'\n'">
笔记:
- 正如@LukeWoodward 提到的,避免使用基于 DOM 的库进行大输入,但是 180K 应该没问题。对于 180M,控制可能永远不会在
minidom.parse()
没有首先耗尽内存的情况下返回 (MemoryError)。
- 正如@alecxe 提到的,您应该消除文件规范中无关的“:”。您应该已经看到了错误输出
IOError: [Errno 22] invalid mode ('r') or filename: 'C::/test_file.xml'
。
- 正如@mzjn 提到的,
xml.dom.minidom.Document
它是不可迭代的。您应该已经看到了错误输出TypeError: iteration over non-sequence
。