2009-09-03 99 views
11

我想使用python解析一個簡單的小型XML文件,但pyXML上的工作似乎已停止。如果可能,我想使用python 2.6。任何人都可以推薦一個可用於2.6的XML解析器嗎?Python中的XML解析

感謝

回答

18

如果是小而簡​​單,然後只需use the standard library

from xml.dom.minidom import parse 
doc = parse("filename.xml") 

這將返回一個DOM樹實現標準Document Object Model API

如果以後需要做這樣的模式驗證複雜的事情或XPath查詢,然後我推薦第三方lxml module,它是流行的libxml2 C庫的封裝。

+2

謝謝!太容易了。 – Alex

3

請問lxml是否符合您的需求?它是我轉向進行xml解析的第一個工具。

+3

另外,Python 2.5+已經集成了etree。它實現了什麼相當於lxml的子集。當我需要etree沒有完全覆蓋的任何東西時,我使用etree進行簡單的XML處理和lxml。 –

5

Here也是關於如何使用minidom以及解釋的一個很好的例子。

+0

鏈接似乎重定向到沒有www前面的主頁。這是一個工作鏈接:http://www.diveintopython.net/xml_processing/index.html – Husky

+0

修復了鏈接。謝謝! –

1

幾年前,我寫了一個庫,用於處理結構化的 XML。它通過做出一些限制性假設使得XML更簡單。

您可以將XML用於類似於文字處理器文檔的東西,在這種情況下,您將XML標籤嵌入到整個場所中,在這種情況下,我的圖書館將不會好。

但是,如果您使用的是類似於配置文件的XML,我的庫相當方便。你定義了描述你想要的XML結構的類,一旦你完成了這些類,就有了一種方法來處理XML並解析它。實際的解析由xml.dom.minidom完成,但是我的庫提取數據並將其放入類中。

最好的部分是:你可以聲明一個「Collection」類型,它將成爲一個Python列表,其中包含零個或多個其他XML元素。這對Atom或RSS feeds這些東西來說非常棒(這是我設計庫的最初原因)。

這裏的網址:http://home.avvanta.com/~steveha/xe.html

我會很高興,如果您有任何回答問題。

6

對於大多數我的任務我已經使用了輕量級minidom命名DOM實現,從官方頁面:

from xml.dom.minidom import parse, parseString 

dom1 = parse('c:\\temp\\mydata.xml') # parse an XML file by name 

datasource = open('c:\\temp\\mydata.xml') 
dom2 = parse(datasource) # parse an open file 

dom3 = parseString('<myxml>Some data<empty/> some more data</myxml>')