xml.etree.ElementTree 在xml文件中将双标签转换为单标签

xml.etree.ElementTree convert double tag to single tag in xml file

提问人:don't blink 提问时间:9/23/2023 更新时间:9/23/2023 访问量:31

问:

我的意思是如何使用 ElementTree 将 MyBro 标签从 double 转换为 single?

从:<MyBro>Steve</MyBro>

自:<MyBro Name="Steve" />

P.S. QS 我做了什么?搜索文档和整个谷歌以获取信息。可能遗漏了什么?

python-3.x xml 元素树

评论

0赞 Yitzhak Khabinsky 9/23/2023
XSLT 在这里效果最好。lxml.de/index.html

答:

0赞 Fanchen Bao 9/23/2023 #1

我假设您正在解析 XML 文件/字符串,并希望将带有双标记的节点替换为单个标记。为此,以下解决方案应有效。

import xml.etree.ElementTree as ET


XML = '''
<Friend>
    <MyBro>
        Foo
    </MyBro>
    <MyBro>
        Bar
    </MyBro>
    <MyBro>
        Lol
    </MyBro> 
</Friend>
'''


# tree = ET.parse(filename)  # if XML from a file
tree = ET.ElementTree(ET.fromstring(XML))
root = tree.getroot()
ET.indent(root)

for child in root.findall('MyBro'):
    name = child.text.strip()  # get the name enclosed between two tags
    tail = child.tail  # record the original ordering
    child.clear()
    child.set('Name', name)  # use attribute to store name
    child.tail = tail  # restore ordering

print(ET.tostring(root, encoding='unicode'))

输出将是

<Friend>
  <MyBro Name="Foo" />
  <MyBro Name="Bar" />
  <MyBro Name="Lol" />
</Friend>