我正在从服务器中获取XML数据,并将其存储在一个字符串中,该字符串包含多个具有相同名称的字段以及嵌套数据。如何正确解析?这是它的外观示例。
<Product>
<ProductNumber>14432</ProductNumber>
<CreationDate>2019</CreationDate>
<ProductVersion>
<Config>A</Config>
<Design>1</Design>
<DesignCreated>2018</DesignCreated>
<DesignedBy>Jon</DesignedBy>
<Design>2</Design>
<DesignCreated>2019</DesignCreated>
<DesignedBy>Doe</DesignedBy>
</ProductVersion>
</Product>
到目前为止,我正在做的是
import ElementTree as ET
tree = ET.fromstring(content_string))
这里的问题是我无法访问ProductVersion内部的任何数据。当我打电话
tree.find('ProductVersion')
我明白了
attrib: {}
tag 'ProductVersion'
tail: None
text: None
所以到目前为止我要做的是
product_version_start = str(content_string).find("<ProductVersion>")-2
product_version_end = str(content_string).find("</ProductVersion>")+15
要在我的XML字符串中找到子字符串,并由此创建一个新树。
tree_productVersion = ET.fromstring(content_string[product_version_start:product_version_end])
但是现在当我尝试
tree_productversion.find('Design').text
仅返回第一个字段。我想访问所有字段并获取所有信息。
因此,我有两个问题,是否有更好的方法来解析嵌套数据?以及当它们具有相同的名称时,如何解析所有字段?
答案 0 :(得分:0)
您可以简单地遍历<ProductVersion>
的子级。
pv = tree.find('ProductVersion')
for child in pv:
print(child.text)
输出:
A
1
2018
Jon
2
2019
Doe