Разобрать XML, чтобы получить дочерние имена узла - PullRequest
0 голосов
/ 25 сентября 2018

Я новичок в Python / XML.Я хочу проанализировать XML для получения данных под родительским узлом.В моем XML есть набор узлов Entity с разными именами.Под каждым «объектом» есть набор «свойств», как показано ниже.Мне нужно получить все свойства конкретной сущности.Например, если это сущность «Quit», мне нужно получить соответствующие имена «Property», разделенные запятыми в виде строки;например, {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'))

1 Ответ

0 голосов
/ 25 сентября 2018

Я мог бы получить имена по мере необходимости.Спасибо за ваши указатели.

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