Running your Python code with a few adjustments:
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)
With this sample input as test_file.xml:
<a>
<b>testing 1</b>
<c>testing 2</c>
</a>
Yields this output:
<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'">
Notes:
- As @LukeWoodward mentioned, avoid DOM-based libraries for large inputs, however 180K should be fine. For 180M, control may never return from
minidom.parse()
without running out of memory first (MemoryError).
- As @alecxe mentioned, you should eliminate the extraneous ':' in the file spec. You should have seen error output along the lines of
IOError: [Errno 22] invalid mode ('r') or filename: 'C::/test_file.xml'
.
- As @mzjn mentioned,
xml.dom.minidom.Document
is not iterable. You should have seen error output along the lines of TypeError: iteration over non-sequence
.