【发布时间】:2026-01-26 15:55:01
【问题描述】:
我正在使用 lxml 编写 XML 文件,但遇到了控制字符问题。我正在从文件中读取文本以分配给包含控制字符的元素。当我运行脚本时,我收到此错误:
ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters
所以我编写了一个小函数来用“?”替换控制字符,当我查看生成的 XML 时,控制字符似乎是新行 0x0A。有了这些知识,我编写了一个函数来编码控制字符:
def encodeXMLText(text):
text = text.replace("&", "&")
text = text.replace("\"", """)
text = text.replace("'", "'")
text = text.replace("<", "<")
text = text.replace(">", ">")
text = text.replace("\n", "
")
text = text.replace("\r", "
")
return text
这仍然返回与以前相同的错误。我想保留新行,所以简单地剥离它们对我来说不是一个有效的选择。不知道我在这一点上做错了什么。我正在寻找一种使用 lxml 执行此操作的方法,类似于:
ruleTitle = ET.SubElement(rule,'title')
ruleTitle.text = encodeXMLText(titleText)
我读过的其他问题要么不使用 lxml,要么不使用换行符 (/n) 和换行符 (/r) 作为控制字符
【问题讨论】:
-
这个答案似乎对我有用*.com/questions/8733233/…
标签: python xml python-2.7 lxml control-characters