我有以下 xml 架构,我想遍历每个 <m0:Row>项目并读取每个项目的子字段。
<env:Body>
<m1:GetModuleStatusRp>
<m1:Response>
<m0:Modules>
<m0:Row>
<m0:ModuleId>2355</m0:ModuleId>
<m0:InstanceId>1</m0:InstanceId>
<m0:Type>4</m0:Type>
<m0:SubType>222</m0:SubType>
<m0:Description>Lorem Ispum</m0:Description>
<m0:Status>11</m0:Status>
</m0:Row>
<m0:Row>
<m0:ModuleId>2352</m0:ModuleId>
<m0:InstanceId>1</m0:InstanceId>
<m0:Type>4</m0:Type>
<m0:SubType>333</m0:SubType>
<m0:Description>Lorem Ispum</m0:Description>
<m0:Status>3</m0:Status>
</m0:Row>
...
...
...
</m0:Modules>
</m1:Response>
</m1:GetModuleStatusRp>
</env:Body>
我目前的代码是这样的:
from xml.etree import ElementTree as et
responseXmlTree = et.fromstring(responseData.content)
i = 0
for xmlTree in responseXmlTree.iter():
moduleId = responseXmlTree[0][0][0][0][i][0].text
moduleType = responseXmlTree[0][0][0][0][i][2].text
moduleSubType = responseXmlTree[0][0][0][0][i][3].text
moduleStatus = responseXmlTree[0][0][0][0][i][4].text
i += 1
不仅我觉得这不整洁,它最后也失败了,如下所示:
moduleId = responseXmlTree[0][0][0][0][i][0].text
IndexError: child index out of range
因为我相信.iter()一个接一个地返回每个 xml 并且在读取最后一行项目之后虽然.iter()仍然有值但只有结束标签(不是子字段)所以索引超出范围。
任何人都可以帮助如何正确地做到这一点吗?蒂亚!