我有一个XML,它有CDATA,其中有一个url的标记,其中包含和号。我应该使用lxml来读取这些标记,但是我得到了一个错误。在
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "src\lxml\lxml.etree.pyx", line 3228, in lxml.etree.fromstring (src\lxml\lxml.etree.c:79593)
File "src\lxml\parser.pxi", line 1848, in lxml.etree._parseMemoryDocument (src\lxml\lxml.etree.c:119112)
File "src\lxml\parser.pxi", line 1729, in lxml.etree._parseDoc (src\lxml\lxml.etree.c:117670)
File "src\lxml\parser.pxi", line 1063, in lxml.etree._BaseParser._parseUnicodeDoc (src\lxml\lxml.etree.c:111657)
File "src\lxml\parser.pxi", line 595, in lxml.etree._ParserContext._handleParseResultDoc (src\lxml\lxml.etree.c:105880)
File "src\lxml\parser.pxi", line 706, in lxml.etree._handleParseResult (src\lxml\lxml.etree.c:107588)
File "src\lxml\parser.pxi", line 635, in lxml.etree._raiseParseError (src\lxml\lxml.etree.c:106442)
File "<string>", line 9
lxml.etree.XMLSyntaxError: EntityRef: expecting ';', line 9, column 98
我怎样才能克服这个错误?我做得对吗?我们需要用什么东西来代替吗?在
代码如下
^{pr2}$
问题是
<ns:return>
元素的文本(CDATA部分)的内容不是合法的XML。如果在传递给etree.fromstring
之前将该文本中的&
替换为&
,则解析应该成功。一般来说,在CDATA部分中隐藏XML不是一个好主意;这只是它可能引起的问题的一个方面。如果您对生成XML的一方有任何影响,我建议您尝试让他们更改它。在
使用XML解析器的recover选项:
然后获取URL(或将其更改为您需要的任何内容):
^{pr2}$使用html解析器规范化和处理违规字符(注意小写标记)
相关问题 更多 >
编程相关推荐