4
我有一堆XML文件使用前綴,但沒有相應的名稱空間聲明。如何使用lxml解析包含前綴但不包含名稱空間聲明的XML?
東西一樣:
<tal:block tal:condition="foo">
...
</tal:block>
或:
<div i18n:domain="my-app">
...
我知道那些前綴來自中,我嘗試以下,但沒有成功:
from lxml import etree as ElementTree
ElementTree.register_namespace("i18n", "http://namespaces.zope.org")
ElementTree.register_namespace("tal", "http://xml.zope.org/namespaces/tal")
with open(path) as fp:
tree = ElementTree.parse(fp)
但LXML仍嗆着:
lxml.etree.XMLSyntaxError: Namespace prefix i18n for domain on div is not defined, line 4, column 20
我知道我可以使用ElementTree.XMLParser(recover=True)
,但是我想保留前綴,而這個方法不會。
有什麼想法?