Ответы пользователя по тегу XML
  • Почему некорректно формируется csv?

    Ba1t
    @Ba1t
    Потому что вы торопитесь добавить ряд в "places_data". В начале собрали все "PlaceId" и добавили их в "places_data", потом все "CountryCode"... (повторяете для каждого заголовка) от этого и получается такая "лестница".
    Кажется это должно сработать:
    for place in root.findall('Place'):
        row = {}
    
        for identity in place.findall('Identity'):
            for placeid in identity.findall('PlaceId'):
                header.add(placeid.tag)
                row[placeid.tag] = placeid.text
                
        for locationlist in place.findall('LocationList'):
            for location in locationlist.findall('Location'):
                for address in location.findall('Address'):
                    for parsed in address.findall('Parsed'):
                        for countrycode in parsed.findall('CountryCode'):
                            header.add(countrycode.tag)
                            row[countrycode.tag] = countrycode.text
        places_data.append(row)
    Ответ написан
    1 комментарий
  • Как правильно распарсить xml?

    Ba1t
    @Ba1t
    import csv
    import xml.etree.ElementTree as ET
    
    
    xml_data = """<?xml version="1.0"?>
    <Root>
        ...
    </Root>"""
    
    root = ET.fromstring(xml_data)
    
    header = set()
    rows = []
    
    for subroot in root:
        row = {}
        for level in subroot:
            header.add(level.tag)
            row[level.tag] = level.text
        rows.append(row)
    
    with open('out.csv', 'w') as file:
        writer = csv.DictWriter(file, fieldnames=sorted(header))
        writer.writeheader()
        writer.writerows(rows)
    Ответ написан
    Комментировать