как извлечь элемент в xml, если у «дочернего» есть тег? - PullRequest
0 голосов
/ 07 августа 2020
<people>
 <type>
  <name>lo_123</name>
  <country>AUS</country>
  <note>
     <name>joe</name>
     <age>26</age>
     <spouse>
         <name>lisa</name>
         <gender>f</gender>
     </spouse>     
  </note>
 </type>
<type>
  <name>hi_123</name>
  <country>AUS</country>
  <note>
     <name>paul</name>
     <gender>m</gender>
     <age>28</age>
     <spouse>
         <name>mona</name>
         <gender>f</gender>
     </spouse>     
  </note>
 </type>
</people>

Мне нужно извлечь name, в котором gender есть как «Paul». Но я не знаю, как отфильтровать «ребенка» с gender.

Вот мой код, который я знал:

xml='xmltest.xml'

crif_tree = ET.parse(xml)
crif_root = crif_tree.getroot()

for a in _root.findall('./type/note/name'):
    print(a.text)

1 Ответ

1 голос
/ 07 августа 2020

попробуйте это crif_root.findall('./type/note[gender]/name'): он выбирает note, только если у него есть дочерний gender. в случае, если gender должно иметь определенное значение, см. Как выбрать узел с помощью XPath, если у родственного узла заданное значение c?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...