2013-09-16 77 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的錯誤輸出。