我正在使用 python 将 XML 文件解析为列表和字典
XML 代码:
<?xml version="1.0"?>
<TP name="TP03_WW35_13">
<Class>
<CDYN>
<test name= "IA CDYN" PP="IA" Workload="PV">
<Parameter name="temprature">
<value>100</value>
</Parameter>
<Parameter name="voltages">
<value>0.85</value>
<value>1.00</value>
<value>1.10</value>
</Parameter>
<Parameter name="Freq">
<value>0.8</value>
<value>1.2</value>
</Parameter>
</test>
<test name= "GT CDYN" PP="GT" Workload="PV">
<Parameter name="temprature">
<value>101</value>
</Parameter>
<Parameter name="voltages">
<value>0.85</value>
</Parameter>
<Parameter name="Freq">
<value>0.8</value>
<value>1.2</value>
<value>1.6</value>
</Parameter>
</test>
</CDYN>
<TDP>
<test name="SDP" Workload="3Dmark Vantage GT1">
<Parameter name="temprature">
<value>100</value>
</Parameter>
</test>
</TDP>
<Sicc>
<test name="SA SICC" PP="SA">
<Parameter name="temprature">
<value>102</value>
</Parameter>
<Parameter name="voltages">
<value>0.85</value>
<value>1.00</value>
</Parameter>
</test>
</Sicc>
</Class>
</TP>
起初,我想将测试作为对我有用的列表与我制作的测试列表创建者一起参加
基于该列表,我想创建一个函数,该函数将从列表中获取测试名称并从其子项创建字典和列表
我希望它看起来的示例输出:
TestParam { pp:IA, WL:PV, tempratures:[10,20,30],Voltages:[0.8,1.0,1.2], freq: [8,12,16]}
发生的事情是我可以看到有 3 个值但只得到第一个
我的代码:
def TestListCreator (root):
TestList = []
for Class in root.find('Class'):
for Tests in Class:
# TestList.append(Class.tag +Tests.attrib['name'] )
TestList.append(Tests.attrib['name'] )
print (TestList)
return TestList
def main():
import xml.etree.ElementTree as ET
XML = ET.parse('1.xml') #parse the xml file into an elementtre
root = XML.getroot()
print root.tag + "=" + root.attrib['name']
TestList = TestListCreator(root)
print (TestList)
## for country in root.findall(".*/CDYN/test[@name='IA CDYN']/Parameter"):
## #for country in root.findall(".*/CDYN/test[@name=]/Parameter[@name=temprature]"):
## rank = country.find('value').text
## name = country.get('name')
## print name, rank
Vlist = []
for country in root.findall(".*/CDYN/test[@name='IA CDYN']/Parameter"):
#for country in root.findall(".*/CDYN/test[@name=]/Parameter[@name=temprature]"):
#for Z in country.find('value'):
#Vlist.append(country.attrib[])
rank = country.find('value').text
name = country.get('name')
print name,rank
print Vlist