2010-08-19 9 views
7

Sto analizzando un file XML non conforme (Sphinx's formato xmlpipe2) e desidero che il parser LXML ignori il fatto che esistono prefissi di spazi dei nomi non risolti.C'è un interruttore per ignorare prefissi di spazi dei nomi non definiti in LXML?

Un esempio della Sfinge 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> 

Sono consapevole di passare un'opzione parser parola chiave per cercare di recuperare XML rotto, per esempio

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

ma quanto sopra non ignora il prefisso, lo rimuove.

Potrei creare un obiettivo che aggiunge nel prefisso rimosso per es.

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

dove AddPrefix() è una classe che aggiunge il prefisso al tag di ogni attributo. C'è un modo più semplice per farlo? Eventualmente voglio scrivere in modo programmato il formato xmlpipe2 di Sphinx.

risposta

1

Aggiungere xmlns:sphinx="bogus" all'elemento principale.

Problemi correlati