Python 用转义序列替换 XML 文本

问题描述 投票:0回答:1

我有一个第三方应用程序正在解析 XML 文件中的魔术字符串,即使它应该将它们视为字符文字。 例如,假设我的 XML 包含以下段:

<element>Sentence containing magicString</element>

为了防止第三方应用程序将

magicString
解析为命令,我想将此xml片段转换为:

<element>Sentence containing &#6D;agicString</element>

如何在 Python 中实现此目的,而不进行全局查找替换(例如,可能存在名为

magicString
的元素无法重命名或 XML 无效)? 以下说明了我的尝试:

from xml.etree import ElementTree
xml = ElementTree.parse(xmlPath)
element = xml.find('.//grandparent/parent/element'):
element.text = '&#6D;agicString'
xml.write(xmlPath)

问题在于,分配给

Element.text
属性会转义文本,因此会生成包含以下内容的 XML 文件:

<element>&amp;#6D;agicString</element>
python python-3.x xml xml-parsing
1个回答
0
投票

你可以转义、取消转义 html 实体:

import xml.etree.ElementTree as ET
import html

t = html.escape('Sentence containing &#6D;agicString')

element= ET.Element('element')
element.text = t

ET.dump(html.unescape(element))
© www.soinside.com 2019 - 2024. All rights reserved.