2013-09-16 79 views
2

我想打开一个xml文件并解析它,但是当我尝试打开它时,文件似乎永远无法打开,它只是继续运行,有什么想法?Python XML文件打开

from xml.dom import minidom 
Test_file = open('C::/test_file.xml','r') 
xmldoc = minidom.parse(Test_file) 

Test_file.close() 

for i in xmldoc: 
    print('test') 

该文件是180.288 KB,它为什么从来没有让它打印部分?

+1

为什么你有两个冒号,试试'r'C:// test_file.xml'。 – alecxe

+0

仍然没有得到打印,当我将其更改为此 –

+0

删除XML的东西,并通过执行类似“print Test_file”或“print Test_file.readline()''检查文件路径。 –

回答

10

有一些调整运行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的错误输出。