是Python / XML的新手。我想解析XML以获取父节点下的数据。 我的XML具有一组名称不同的“实体”节点。在每个“实体”下,都有一组“属性”,如下所示。我需要获取特定实体的所有属性。例如,如果它是实体“ Quit”,我需要获取相应的“属性”名称,并用逗号分隔字符串。例如使用Python脚本的 {QuitId,QuitReason,状态,QuitTime} 。我只需要属性的“名称”属性。
<Entity Name="Boot">
<Property Name="BootId" Type="Edm.Int32" Nullable="false"/>
<Property Name="Name" Type="Edm.String" Nullable="false"/>
<Property Name="Status" Type="Edm.String" Nullable="false"/>
<Property Name="BootTime" Type="Edm.DateTimeOffset"/>
</Entity>
<Entity Name="Quit">
<Property Name="QuitId" Type="Edm.Int32" Nullable="false"/>
<Property Name="QuitReason" Type="Edm.String" Nullable="false"/>
<Property Name="Status" Type="Edm.String" Nullable="false"/>
<Property Name="QuitTime" Type="Edm.DateTimeOffset"/>
</Entity>
我可以使用以下脚本获取所有实体的属性“名称”。但是,我不确定如何只获取特定实体的属性;就像“退出”
import xml.etree.ElementTree as ET
tree = ET.parse('D:\Code\XM_metadata.xml')
root = tree.getroot()
for prop in root.iter('{http://docs.oasis-open.org/odata/ns/edm}Property'):
print(prop.get('Name'))
答案 0 :(得分:1)
我可以得到所需的名称。感谢您的指导。
import xml.etree.ElementTree as ET
tree = ET.parse('D:\Code\XM_metadata.xml')
root = tree.getroot()
properties = ''
for prop in root.findall(".//*[@Name='Quit']/{http://docs.oasis-open.org/odata/ns/edm}Property"):
properties = properties + prop.get('Name') + ','
properties = properties[:-1]
print (properties)