我一直在寻找一种从XML文档中删除元素的方法,同时使用Python保留内容,但我无法找到有效的答案。
基本上,我收到了以下格式的XML文档(示例):
<root>
<element1>
<element2>
<text> random text </text>
</element2>
</element1>
<element1>
<element3>
<text> random text </text>
</element3>
</element1>
</root>
我要做的是将element2和element3合并到element1中,以便输出XML文档如下所示:
<root>
<element1>
<element2>
<text> random text </text>
</element2>
<element3>
<text> random text </text>
</element3>
</element1>
</root>
我很欣赏有关我(希望)简单问题的一些提示。
注意:我对Python也有些新意,所以请耐心等待。
答案 0 :(得分:0)
这可能不是最漂亮的解决方案,但由于还没有其他答案......
您可以搜索,例如</element1><element1>
,并将其替换为空字符串。
xml = """<root>
<element1>
<element2>
<text> random text </text>
</element2>
</element1>
<element1>
<element3>
<text> random text </text>
</element3>
</element1>
</root>"""
import re
print re.sub(r"\s*</element1>\s*<element1>", "", xml)
或者更一般地,re.sub(r"\s*</([a-zA-Z0-9_]+)>\s*<\1>", "", xml)
合并同一元素的所有连续实例,方法是将第一个元素名称作为一个组进行匹配,然后使用\1
查找该组。
两种情况下的输出:
<root>
<element1>
<element2>
<text> random text </text>
</element2>
<element3>
<text> random text </text>
</element3>
</element1>
</root>
对于更复杂的文档,您可能希望使用Python's many XML libraries之一。