我有以下带有无效字符的XML
<capability_camctrl_privilege>
<descr>Indicate whether to support “Manage Privilege”
<dependent>True</dependent>
我用以下方式读取XML
root = etree.fromstring("%s" % in_xml,
parser=etree.XMLParser(recover=True))
并保存我在Dictionary结构中加载的XML,
最后我做了一些修改并尝试输出新的XML,
node = 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
答案 0 :(得分:3)
这是lxml
的常见错误消息。解决方案是在将字符串与lxml
一起使用之前将其转换为unicode。要做到这一点,你需要知道编码,但如果你不知道的话,猜测 UTF-8 通常是正确的。
in_xml_unicode = unicode(in_xml, 'utf-8')
root = etree.fromstring(in_xml_unicode, parser=etree.XMLParser(recover=True))