Получить атрибуты для конкретных дочерних значений, используя pythton xml

1

Как вы получаете значения "источников" для "имени группы" 457 для "символа лаборатории"

<?xml version="1.0" encoding="UTF-8"?>
<tabgroup1 name1="CRDT" revision="19531">
  <client name="123" group="457" />

  <group name="457">
    <lab symbol="xyz/ght" sources="SBS,TCS,DDT" />
    <lab symbol="pqr/xyz" sources="RRT,QQR,XXC" />

      </group>

  <group name="345">
    <lab symbol="xyz/ght" sources="GHB,GRT,BNM" />

      </group>


</tabgroup1>

Я тестировал, используя следующие шаги: Python: доступ к вложенным дочерним элементам в xml файле, обработанный ElementTree, но вывод выводит все атрибуты.

  • 0
    я имею в виду, получить «источники» для «лабораторного символа» = «xyz / ght» для «имени группы» 457
Теги:

1 ответ

1
Лучший ответ

Вы можете использовать BeautifulSoup:

data = '''<?xml version="1.0" encoding="UTF-8"?>
<tabgroup1 name1="CRDT" revision="19531">
  <client name="123" group="457" />
  <group name="457">
    <lab symbol="xyz/ght" sources="SBS,TCS,DDT" />
    <lab symbol="pqr/xyz" sources="RRT,QQR,XXC" />
      </group>
  <group name="345">
    <lab symbol="xyz/ght" sources="GHB,GRT,BNM" />
      </group>
</tabgroup1>'''

soup = BeautifulSoup(data, 'lxml')

result = [j['sources'] for i in soup.find_all('group', {'name': '457'}) for j in i.find_all('lab')]
result
#['SBS,TCS,DDT', 'RRT,QQR,XXC']

И это будет делать то же самое с помощью xml:

import xml.etree.ElementTree as ET

data = '''<?xml version="1.0" encoding="UTF-8"?>
<tabgroup1 name1="CRDT" revision="19531">
  <client name="123" group="457" />
  <group name="457">
    <lab symbol="xyz/ght" sources="SBS,TCS,DDT" />
    <lab symbol="pqr/xyz" sources="RRT,QQR,XXC" />
      </group>
  <group name="345">
    <lab symbol="xyz/ght" sources="GHB,GRT,BNM" />
      </group>
</tabgroup1>'''

tree = ET.fromstring(data)
result = [j.attrib['sources'] for i in tree.findall('group') if i.attrib['name'] == '457' for j in i.findall('lab')]
result
#['SBS,TCS,DDT', 'RRT,QQR,XXC']
  • 0
    спасибо, но я могу использовать «import xml.etree.ElementTree as ET» в python. Кроме того, мне нужны только источники для лабораторного символа = "xyz / ght в названии группы =" 457 "
  • 0
    @ user1234567890 Gotcha, я добавил решение xml .
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню