【问题标题】:Unescape "&amp" when editing XML\HTML编辑 XML\HTML 时取消转义“&amp”
【发布时间】:2015-11-03 09:43:52
【问题描述】:

我有一个函数,它接受一个叫做标签的参数。这个标签然后用于使用 ElementTree 替换元素“assignedNode”的内容。

该函数循环遍历目录中的所有xml文件并将“标签”参数写入元素内容。

我的“标签”参数包含“&”符号,但是当 ET 将其写入 xml 文件时,它显示为“&amp”。

有人可以指导我如何取消转义这个字符并强制它写“&”符号吗?

这是我的代码:

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 解析器将其转换为 &amp 表示法
  • 这样做会使您的 xml 文件无效。 “&”是一个特殊的转义字符。
  • @zxcmehran 我可以向您保证,这不会使我的文件无效。 xml 文件中的标签需要 & 来充当和运算符。

标签: python html xml elementtree


【解决方案1】:

以下是 XML 中的转义字符列表:

https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references

& 是转义字符,ElementTree 解析器默认设计为转义该字符

参考:What characters do I need to escape in XML documents?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    • 2010-10-14
    • 2015-05-16
    • 1970-01-01
    • 2012-06-28
    相关资源
    最近更新 更多