【发布时间】:2021-09-14 03:49:05
【问题描述】:
我有一个 xml 文件 input.xml
<?xml version="1.0"?>
<TestSuite Name="DM123">
<Group Name="TestRoot" ExecutionPolicy="AnyDeviceAnyOrder">
<Parameters>
<Parameter Type="Integer" Name="maxA" Value="1" />
<Parameter Type="Integer" Name="MaxB" Value="120" />
<Parameter Type="String" Name="MaxC" Value="master" />
</Parameters>
<Children>
<Test Name="TestCam" Namespace="TestCase">
<Parameters>
<Parameter Type="Integer" Name="maxA" />
<Parameter Type="Integer" Name="MaxB" />
<Parameter Type="String" Name="MaxC" />
</Parameters>
</Test>
</Children>
</Group>
<Models>
<Model Name= "NewPhone">
</Models>
</TestSuite>
我想移动一个新的 xml 文件中的所有内容,包括组名以及带有组名但没有子标签的行。所以基本上除了没有子标签的所有东西都放入一个新的 xml 文件中。
所需的输出.xml:
<?xml version="1.0"?>
<TestSuite Name="DM123">
<Group Name="TestRoot" ExecutionPolicy="AnyDeviceAnyOrder">
<Parameters>
<Parameter Type="Integer" Name="maxA" Value="1" />
<Parameter Type="Integer" Name="MaxB" Value="120" />
<Parameter Type="String" Name="MaxC" Value="master" />
</Parameters>
</Group>
<Models>
<Model Name= "NewPhone">
</Models>
</TestSuite>
我是 python 新手,所以我做了一些基本的编程,只打印子标签和子属性。不知道如何才能达到上述期望的输出。任何帮助都会很棒。提前致谢
仅供参考 - 我有多个相同类型的文件,所以如果我可以放置一个函数来获取每个文件并移动除子标签之外的所有内容。
代码:
import pandas
import xml.etree.ElementTree as ET
import io
from collections import defaultdict
from io import BytesIO
xmlDocument = open("input.xml", 'r').read()
tree = ET.parse('input.xml')
root = tree.getroot()
for child in root:
print(child.tag, child.attrib)
for parameter in root.findall('Group'):
print(parameter.attrib)
【问题讨论】:
标签: python xml xml-parsing elementtree