2010-08-19 66 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"到根元素。

相关问题