Python: 如何在XML文件中用新节点替换字符?

0 投票
1 回答
1267 浏览
提问于 2025-04-19 03:47

我想把我下面这个节点中的所有冒号 ":" 替换成一个新的节点 "<colon/>",就像下面这样。

我想要这个:

<shortName>Trigger:Digital Edge:Source</shortName>

变成这样:

<shortName>Trigger<colon/>Digital Edge<colon/>Source</shortName>

我已经尝试过用搜索和替换字符串的方法,但输出时所有的 "< >" 都变成了 &lt 和 &gt 。有没有人能给我一些建议,教我怎么做?谢谢!

1 个回答

1

这个想法是获取节点的文本内容,然后用冒号把它分开,逐个添加,同时为每个冒号设置.tail

import xml.etree.ElementTree as ET

data = """<?xml version="1.0" encoding="UTF-8" ?>
<body>
    <shortName>Trigger:Digital Edge:Source</shortName>
</body>"""

tree = ET.fromstring(data)
for element in tree.findall('shortName'):
    items = element.text.split(':')
    if not items:
        continue

    element.text = items[0]
    for item in items[1:]:
        colon = ET.Element('colon')
        colon.tail = item
        element.append(colon)

print ET.tostring(tree)

输出结果是:

<body>
    <shortName>Trigger<colon />Digital Edge<colon />Source</shortName>
</body>

撰写回答