【发布时间】:2013-01-31 00:21:25
【问题描述】:
我有以下带有无效字符的 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))
并保存我在字典结构中加载的 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 版
【问题讨论】:
-
您要准确包含哪些特殊/无效字符?
-
致 James:特殊字符可能是“,我找到了函数 escape(),而 quoteattr 无法转义符号 -> “
-
好的。 Element() 的第一个参数是标签名称(即
<descr>...</descr>中的descr),不能包含引号字符。您确定您使用的是 API,因为它记录在案的工作? -
我没有将无效字符放入 TAG 名称中。无效字符试图放入 TEXT 。 XML_NODE.text,然后抛出异常和错误消息!是否有任何函数可以转义 LXML 中的任何无效字符,例如“:“ ” ”
-
也许发布一个导致问题的小型独立示例会有所帮助?这可能会让人们更容易提供帮助。
标签: python xml-parsing python-2.7 lxml