我正在使用lxml来解析一些xml文件。我不创建它们,我只是在解析它们。某些文件包含名称空间的无效uri。例如:
'D:\Path\To\some\local\file.xsl'
当我尝试处理它时出错:
lxml.etree.XMLSyntaxError: xmlns:xsi: 'D:\Path\To\some\local\file.xsl' is not a valid URI
是否有一种简单的方法可以用某些东西替换任何无效的uri(任何东西,例如'http://www.googlefsdfsd.com/')?我想写一个正则表达式,但希望有一个更简单的方法。
答案 0 :(得分:3)
解析器不喜欢的是名称空间uri中的反斜杠。
要解析xml尽管uris无效,你可以实例化lxml.etree.XMLParser recover
参数设置为True
,然后用它来解析文件:
from lxml import etree
recovering_parser = etree.XMLParser(recover=True)
xml = etree.parse("xmlfile.xml", parser=recovering_parser)
...
答案 1 :(得分:0)
如果您确定这些特定错误对您的用例不重要,您可以将其作为一个例子来捕获:
try:
# process your tree here
SomeFn()
except lxml.etree.XMLSyntaxError, e:
print "Ignoring", e
pass