谁能告诉我解析xml文档的最佳方法是什么
我的XML文件如下所示。XML标记在每个块上都不一致,我的脚本失败了,因为它无法在所有迭代中找到密钥。我正在使用minidom
<Header version=test>
<pool name="A">
<pooltier name="1"></pooltier>
<pooltier name="2"></pooltier>
<pooltier name="3"></pooltier>
</pool>
<pool name="B">
<pooltier name="1"></pooltier>
<pooltier name="2"></pooltier>
<pooltier name="3"></pooltier>
</pool>
<pool name="C">"No PoolTier Here"
</pool>
</Header>
并非所有的“池”都有“池层”
我的代码片段:
pools = xmldoc.getElementsByTagName('Pool')
for poolname in pools:
print(poolname.attributes['name'].value)
print(poolname.attributes['poolID'].value)
poolnam = poolname.attributes['name'].value
poolnum = poolname.attributes['poolID'].value
pooluse = poolname.attributes['usageRate'].value
pooltiers = xmldoc.getElementsByTagName('PoolTier')
print(xmldoc.getElementsByTagName('PoolTier'))
for tiername in pooltiers:
Tid = tiername.attributes['tierID'].value
capKB = tiername.attributes['capacityInKB'].value
FreeKB = tiername.attributes['freeCapacityInKB'].value
Usage = tiername.attributes['usageRate'].value
raid = tiername.attributes['raidLevel'].value
rpmval = tiername.attributes['rpm'].value
dtype = tiername.attributes['diskType'].value
print(tiername.attributes['tierID'].value)
#print(tiername.attributes['capacityInKB'].value)
#print(tiername.attributes['freeCapacityInKB'].value)
#print(tiername.attributes['usageRate'].value)
#print(tiername.attributes['raidLevel'].value)
#print(tiername.attributes['rpm'].value)
print(tiername.attributes['diskType'].value)
if dtype == "5":
dtype = "FMC"
#print (poolname.attributes['basicUsableFMCCapacityTotal'].value)
capKB = poolname.attributes['basicUsableFMCCapacityTotal'].value
UsedFMC = poolname.attributes['basicUsableFMCCapacityUsed'].value
FreeKB = int(capKB) - int(UsedFMC)
FMCUsage = float(UsedFMC)/float(capKB) * 100
Usage = int(FMCUsage)
elif dtype == "4":
dtype = "SAS"
else:
dtype = "Unknown"
问题是,即使它遇到一个没有pooltier的池,它也会进入“if dtype==5”并以“KeyError:'basicUsableFMCCapacityTotal'失败”
目前没有回答
相关问题 更多 >
编程相关推荐