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

时间:2014-09-01 04:44:09

标签: python xml elementtree xml.etree

我想在下面的节点中用新节点“< colon />”替换分号“:”的所有实例如下图所示。

我想要这个:

  

< shortName>触发器:数字边缘:来源< / shortName>

变成这样:

  

< shortName>触发器<冒号/>数字边缘<冒号/>来源< / shortName>

我已经尝试过使用搜索和替换字符串,但是当我得到输出时所有的“<>”改为& lt和& gt。 任何人都可以建议任何技术来做到这一点。 谢谢

1 个答案:

答案 0 :(得分: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>