在LXML中是否有忽略未定义名称空间前缀的开关?

2024-04-16 15:58:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在分析一个不兼容的XML文件(Sphinx'sxmlpipe2格式),希望LXML解析器忽略存在未解析的名称空间前缀这一事实。在

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>

我知道传递一个解析器关键字选项来尝试恢复损坏的XML,例如

^{pr2}$

但是上面并没有忽略前缀,而是删除了它。在

我可以创建一个添加删除前缀的目标

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

其中AddPrefix()是一个类,它向每个属性标记添加前缀。 有更简单的方法吗? 最后,我希望以编程方式清晰地编写Sphinx的xmlpipe2格式。在


Tags: 文件name名称解析器fieldschema格式type