【发布时间】:2015-11-03 09:43:52
【问题描述】:
我有一个函数,它接受一个叫做标签的参数。这个标签然后用于使用 ElementTree 替换元素“assignedNode”的内容。
该函数循环遍历目录中的所有xml文件并将“标签”参数写入元素内容。
我的“标签”参数包含“&”符号,但是当 ET 将其写入 xml 文件时,它显示为“&”。
有人可以指导我如何取消转义这个字符并强制它写“&”符号吗?
这是我的代码:
def apply_label(label):
clone_path = os.getcwd()
for root, dirs, files in os.walk(clone_path):
for f in files:
try:
tree = ET.ElementTree(file=f)
root = tree.getroot()
for assignedNode in root.iter("assignedNode"):
assignedNode.text = label
tree = ET.ElementTree(root)
with open(f, "w") as a:
tree.write(a)
except :
pass
【问题讨论】:
-
@AkhilThayyil 不,这不是重复的。许多关于堆栈溢出的帖子都展示了如何提取 XML 中已有的文本并返回它的未转义版本。我想将文本推送到从一开始就未转义的 XML。或者至少编辑元素内容以在 xml 文件中显示未转义的字符。
-
& 是 xml 中的转义字符,因此,ElementTree 解析器将其转换为 & 表示法
-
这样做会使您的 xml 文件无效。 “&”是一个特殊的转义字符。
-
@zxcmehran 我可以向您保证,这不会使我的文件无效。 xml 文件中的标签需要 & 来充当和运算符。
标签: python html xml elementtree