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格式。