【问题标题】:Parse XML to get Child names of a node解析 XML 以获取节点的子名称
【发布时间】:2018-09-25 17:12:14
【问题描述】:

我是 Python/XML 的新手。我想解析一个 XML 以获取父节点下的数据。 我的 XML 有一组具有不同名称的“实体”节点。在每个“实体”下,都有一组“属性”,如下所示。我需要获取特定实体的所有属性。例如,如果它是实体“退出”,我需要获取相应的“属性”名称,用逗号分隔作为字符串;例如,{QuitId, QuitReason, Status, QuitTime} 使用 Python 脚本。我只需要属性的“名称”属性。

<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'))

【问题讨论】:

  • 请发布根标签(XML 的要求)和尝试的 Python 代码。
  • 您应该阅读本教程,该教程描述了基础知识以及如何从简单的 XML 结构中提取数据:docs.python.org/3/library/xml.etree.elementtree.html#tutorial
  • 感谢您的 cmets。我可以使用添加到问题中的代码来获取名称。但是,我不确定如何获取特定实体的“属性”

标签: python xml python-3.x python-2.7 xml-parsing


【解决方案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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-12
    • 2012-12-13
    • 2011-05-16
    • 1970-01-01
    • 2019-12-03
    • 2012-03-06
    • 2020-10-27
    • 1970-01-01
    相关资源
    最近更新 更多