简体   繁体   中英

How to parse this xml file which have two root elements?

<objects>
   <object>
      <record>
            <net_amount>3657.82</net_amount>
            <order_number>47004603</order_number>
            <invoice_source>Email</invoice_source>
            <invoice_capture_date>2022-11-13</invoice_capture_date>
            <document_type>INVOICE</document_type>
            <data_capture_provider_code>00001</data_capture_provider_code>
            <data_capture_provider_reference>594826</data_capture_provider_reference>
            <document_capture_provide_code>00002</document_capture_provide_code>
            <document_capture_provider_ref>594826</document_capture_provider_ref>
      </record>
   </object>
</objects>

how can i parse this xml data. this data have two "object" elements. when i remove one "object" i am able to parse this. but otherwise i cannot parse it.

for file in files:
    tree = ET.parse(file)
    root = tree.getroot()
    for i in root.findall("record"):
        net_amount = i.find("net_amount").text
        order_number = i.find("order_number").text
        

when i use this above code i want to get the .net_amount" and "order_number". but when i remove one object from the xml file it works fine. but i have so many files like this. is there any method to make it work. please help me

You've done the hard part already, all you have to do is to wrap your code in a loop that will go through the object tags.

for file in files:
    tree = ET.parse(file)
    root = tree.getroot() #This is the outer "objects" tags
    for obj in root.findall("object"): #Loop over all object in it
        for i in obj.findall("record"): #Resume the original search in the specific object tag rather than the outer one
            net_amount = i.find("net_amount").text
            order_number = i.find("order_number").text

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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