2010-08-19 16 views
7

Piszę niezgodny plik XML (Sphinx's format xmlpipe2) i chcę, aby analizator składni LXML ignorował fakt, że istnieją nierozwiązane prefiksy przestrzeni nazw.Czy istnieje przełącznik ignorujący niezdefiniowane przedrostki przestrzeni nazw w LXML?

Przykładem Sphinx 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> 

Jestem świadomy przekazując opcję słowa kluczowego parser, aby spróbować odzyskać złamany XML, np

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

ale powyższe nie ignoruje prefiksu, usuwa go.

Mogę utworzyć cel dodający usunięty prefiks, np.

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

gdzie AddPrefix() jest klasą, która dodaje przedrostek do każdego znacznika atrybutu. Czy jest prostszy sposób to zrobić? W końcu chcę programowo napisać format Xmlpipe2 Sphinx w czysty sposób.

Odpowiedz

1

Dodaj xmlns:sphinx="bogus" do elementu głównego.

Powiązane problemy