简体   繁体   English

XML 使用 Etree python 访问树中的元素

[英]XML accessing elements within the tree with Etree python

I'm trying to access information within a XML file via python Etree.我正在尝试通过 python Etree 访问 XML 文件中的信息。 The XML looks like this: XML 看起来像这样:

<events-data>
      <dossier-event event-type="new" id="EVT_4573534">
         <event-date>
            <date>20220816</date>
         </event-date>
         <event-code>EPIDOSNWIAI</event-code>
         <event-text event-text-type="DESCRIPTION">text</event-text>
      </dossier-event>
   </events-data>
   <events-data>
      <dossier-event event-type="new" id="EVT_4573535">
         <event-date>
            <date>20220402</date>
         </event-date>
         <event-code>EPIDOS PCT</event-code>
         <event-text event-text-type="DESCRIPTION">text1</event-text>
      </dossier-event>
   </events-data>

I want to access the <date> 20220402 </date> and retrieve the date, so 20220402. My attempt for it looks like this:我想访问<date> 20220402 </date>并检索日期,所以是 20220402。我的尝试如下所示:

root_events = ET.fromstring(response_events.content)
for element in root_events.iter('{http://myapi/register}date'):
    print(element.text)

The problem: There is an unknown number of <date>[date]</date> before and after this date, but which is not within <events-data> or <event-date> .问题:在此日期之前和之后有未知数量的<date>[date]</date> ,但不在<events-data><event-date>内。 But if I try to list all tags, attributes or text of <event-date> , it's empty.但是,如果我尝试列出<event-date>的所有标签、属性或文本,它是空的。 Can someone explain me how i only access the dates within something like有人可以解释一下我如何只访问类似的日期

<event-date>
     <date>20220402</date>
</event-date>

If you fix your XML to have a root tag, an XPATH query might work for you:如果您将 XML 修复为具有根标签,则 XPATH 查询可能对您有用:

import xml.etree.ElementTree as ET

for event_date in ET.parse("sample.xml").getroot().findall(".//events-data/dossier-event/event-date/date"):
    print(event_date.text)

Produces the following output:产生以下 output:

$ python sample.py
20220816
20220402

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM