2010-08-19 40 views
7

我解析不符合標準的XML文件(Sphinx's xmlpipe2數據格式),並想LXML解析器忽視的事實是存在未解決的命名空間前綴。是否有開關忽略LXML中未定義的名稱空間前綴?

獅身人面像XML的一個例子:

<sphinx:schema> 
    <sphinx:field name="subject"/> 
    <sphinx:field name="content"/> 
    <sphinx:attr name="published" type="timestamp"/> 
    <sphinx:attr name="author_id" type="int" bits="16" default="1"/> 
</sphinx:schema> 

我知道經過一個解析器關鍵字選項嘗試恢復破損的XML,例如中

parser = etree.XMLParser(recover=True) 
tree = etree.parse('sphinxTest.xml', parser) 

但上述不忽略前綴,它將其刪除。

我可以創建一個目標,添加已刪除的前綴,例如

parser = etree.XMLParser(target = AddPrefix()) 

其中AddPrefix()是將前綴添加到每個屬性標記的類。 有沒有更簡單的方法來做到這一點? 最終我想以編程方式乾淨地編寫Sphinx的xmlpipe2格式。

回答

1

添加xmlns:sphinx="bogus"到根元素。

相關問題