class TestLXML(unittest.TestCase):
def test_lxml(self):
from lxml import etree
etree.fromstring('<?xml version="2.0" encoding="UTF-8" standalone="no"?><test>test</test>')
失败并出现异常。
测试:
Error
Traceback (most recent call last):
File "/home/viator/coding/esb/mdmesb/packages/smev/core/request/test.py", line 33, in test_lxml
etree.fromstring('<?xml version="2.0" encoding="UTF-8" standalone="no"?><test>test</test>')
File "lxml.etree.pyx", line 3032, in lxml.etree.fromstring (src/lxml/lxml.etree.c:68121)
File "parser.pxi", line 1786, in lxml.etree._parseMemoryDocument (src/lxml/lxml.etree.c:102470)
File "parser.pxi", line 1674, in lxml.etree._parseDoc (src/lxml/lxml.etree.c:101299)
File "parser.pxi", line 1074, in lxml.etree._BaseParser._parseDoc (src/lxml/lxml.etree.c:96481)
File "parser.pxi", line 582, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:91290)
File "parser.pxi", line 683, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:92476)
File "parser.pxi", line 622, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:91772)
XMLSyntaxError: Unsupported version '2.0', line 1, column 19
结果:
{{1}}
lxml不支持2.0版吗?我该怎么办?
答案 0 :(得分:2)
好吧,看起来没有正式的XML 2.0规范 - 只是一个W3C工作组信息规范,明确指出&#34; XML安全工作组已同意不再进一步推进这个Canonical XML 2.0规范建议&#34; 。 (https://www.w3.org/TR/xml-c14n2/)。进一步撰写关于&#34; XML 2.0&#34;在Wikpedia和Stackoverflow上证实了这一点。
因此,由于没有正式的规范,lxml的生产质量,形式,严格的检查库无法读取它。
如果您的文档与XML 1.1兼容,则jsut将替换最初的&#34; 2.0&#34;在&#34; 1.1&#34; - 在解析之前将XML视为字符串。如果不是,你将不得不选择另一个使用信息丰富的W3C规范(或自己制作)的图书馆。
一些谷歌搜索发现没有类似于&#34; XML 2.0&#34;任何库都支持Python。另一个选择是记录XML 2.0中需要哪些功能(如果有的话),并创建一个XML预处理器来处理这些功能。