1

我有以下带有无效字符的 XML

  <capability_camctrl_privilege>
  <descr>Indicate whether to support &#8220;Manage Privilege&#8221; 
  <dependent>True</dependent>

我通过以下方式读取 XML root = etree.fromstring("%s" % in_xml, parser=etree.XMLParser(recover=True))

并保存我在字典结构中加载的 XML,

最后我做了一些修改并尝试输出一个新的 XML,

节点 = etree.Element(STRING_WITH_SPECIAL_CHRACRTER)

我收到错误消息All strings must be XML compatible: Unicode or ASCII, no NULL bytes

我试图通过导入转义无效字符串

from xml.sax.saxutils import escape
from xml.sax.saxutils import quoteattr

但是它不起作用,有人可以帮助我解决问题吗?非常感谢!

Python 2.7 版

4

1 回答 1

3

这是一个常见的错误消息lxml。解决方案是在将字符串与lxml. 为此,您需要知道编码,但如果您碰巧不知道,对UTF-8的猜测通常是正确的。

in_xml_unicode = unicode(in_xml, 'utf-8')
root = etree.fromstring(in_xml_unicode, parser=etree.XMLParser(recover=True))
于 2013-02-17T23:22:03.003 回答