我试图用lxml
Python模块解析文件浏览器Thunar的自定义操作文件(~/.config/Thunar/uca.xml
)。在
出于某些原因,Thunar显然会将malformed declaration
写入以下文件:
<?xml encoding="UTF-8" version="1.0"?>
显然,version
应该作为声明中的第一个“属性”出现。lxml
如果我试图解析文件,则引发一个XMLSyntaxError
。在
不,我不能简单地更正声明,因为图纳尔一直用伪造的声明覆盖它。在
这很可能是图纳的一个虫子。在
不过,我想知道如何忽略带有lxml
的XML声明。
我知道我可以预先处理XML文档以过滤掉XML声明。但这看起来不太优雅。由于XML似乎默认为版本1.0和UTF-8编码,因此确实有可能忽略声明并假定在lxml
中。我没有在文档或谷歌上找到任何东西,我可能忽略了一些东西。在
我对Thunar知之甚少,但如果它产生了问题中的XML声明,那么这就是一个bug。不正确的XML声明会导致文档格式错误。在
XML语法为XML声明中的项指定一个正确的顺序。}。见http://w3.org/TR/xml/#NT-XMLDecl。在
version
必须排在第一位,第二位是{但是,对于lxml,您可以使用一个解析器实例进行解析,该实例将
recover
选项设置为True
。在这种情况下是有效的。错误的XML声明被忽略。在见http://lxml.de/api/lxml.etree.XMLParser-class.html
相关问题 更多 >
编程相关推荐