【发布时间】:2016-05-19 07:52:12
【问题描述】:
我尝试使用 lxml.etree.parse() 解析以下 XML 文件。此 XML 在第 3 行包含来自特殊字体的字符。此字符来自 Dingbats 字体 - 值 0x 7 - 电话象形图。在 Notepad++ 中,它显示为 BEL - 黑色矩形内的白色字母。我无法将这个字符插入问题中。
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
<layer pass="0" class="FontMarker" locked="0">
<prop k="chr" v="!!!SPECIAL_CARACTER_HERE!!!"/>
</layer>
</qgis>
这个字符使 lxml(xml 也崩溃)崩溃并出现以下错误:
File "lxml.etree.pyx", line 3193, in lxml.etree.parse (src/lxml/lxml.etree.c:64168)
File "parser.pxi", line 1548, in lxml.etree._parseDocument (src/lxml/lxml.etree.c:91390)
File "parser.pxi", line 1577, in lxml.etree._parseDocumentFromURL (src/lxml/lxml.etree.c:91674)
File "parser.pxi", line 1477, in lxml.etree._parseDocFromFile (src/lxml/lxml.etree.c:90741)
File "parser.pxi", line 1024, in lxml.etree._BaseParser._parseDocFromFile (src/lxml/lxml.etree.c:87655)
File "parser.pxi", line 565, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:83243)
File "parser.pxi", line 656, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:84225)
File "parser.pxi", line 596, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:83549)
lxml.etree.XMLSyntaxError: invalid character in attribute value, line 3, column 14
如何解析这样的文档?
【问题讨论】:
-
你需要那个角色还是可以去掉它?
-
@pacholik 我确实需要它,但解析大部分文件总比什么都不解析要好,因此排除此类字符的解决方法会有些令人满意。
-
它显示为 BEL,因为 7 是代表 BEL en.wikipedia.org/wiki/Bell_character 的控制字符,你有字体和/或 xml 文件的链接吗?
-
@PadraicCunningham here is the link to file。不幸的是,我很难找到字体本身。
-
您有手机象形文字字体示例的链接吗? xml 不支持控制字符,这似乎是源代码中的内容,您想从文件中获取什么?
标签: python xml parsing fonts lxml