lxml:XMLSyntaxError:不支持的版本' 2.0'

时间:2016-01-29 14:47:01

标签: python lxml

使用XML 2.0版时,

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版吗?我该怎么办?

1 个答案:

答案 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预处理器来处理这些功能。