我有如下XML文件:
<root>
<scen name="n1">
<case name="c1">
<res>Text1</res>
</case>
</scen>
<scen name="n2">
<case name="c234">
<res>Text</res>
</case>
</scen>
<scen name="n1">
<case name="c2">
<res>Text1</res>
</case>
<case name="c1">
<res>Text2</res>
</case>
</scen>
</root>
我想对它进行解析,并做出类似的事情:
<root>
<scen name="n1">
<case name="c1">
<res>Text1</res>
<res>Text2</res>
</case>
<case name="c2">
<res>Text1</res>
</case>
</scen>
<scen name="n2">
<case name="c234">
<res>Text</res>
</case>
</scen>
</root>
我更喜欢python,但我就是解决不了它。我尝试了许多选择,但没有一个奏效。也许有什么建议
def join(root):
index = defaultdict(list)
for scenario in root.findall(".//scenario"):
index[scenario.get('name')].append(scenario.getchildren())
nRoot = ET.Element('root')
elems = []
for i in index:
scen = ET.Element('scenario',name=i)
for elem in index[i]:
for e in elem:
scen.append(e)
elems.append(scen)
nRoot.extend(elems)
return nRoot
数据集很大(root有大约1500个节点),但在使用此方法后,我复制了一些节点。而且案例节点仍然没有合并
如果
case
名称也相同,则不会由sceno.extend(s.getchildren())
自动处理。请尝试此代码-相关问题 更多 >
编程相关推荐