У меня есть приведенная ниже структура xml, и я пытаюсь преобразовать данные xml в структурированный кадр данных pandas. Я прочитал несколько сообщений от stackoverflow о конвертации в xml, используя как xml.etree.ElementTree, так и BeautifulSoup, но ни один из них не подходит для примера, где мне нужны не только теги, атрибуты или текст, но и все они на самом деле.
например, то, что я надеюсь получить из приведенного ниже xml, это столбцы типа:
abr_record_last_updated_date, abr_replaced, abn_status, abn_status_from_date, abn
Вы увидите, что в приведенном выше абн. Есть фактический текст, и я просто не уверен, как все это собрать.
<?xml version="1.0"?><Transfer error="none" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="BulkExtract.xsd"><TransferInfo><FileSequenceNumber>1</FileSequenceNumber><RecordCount>714100</RecordCount><ExtractTime>2019-06-19T12:22:15</ExtractTime></TransferInfo>
<ABR recordLastUpdatedDate="20180216" replaced="N"><ABN status="ACT" ABNStatusFromDate="19991101">11000000948</ABN><EntityType><EntityTypeInd>PUB</EntityTypeInd><EntityTypeText>Australian Public Company</EntityTypeText></EntityType><MainEntity><NonIndividualName type="MN"><NonIndividualNameText>QBE INSURANCE (INTERNATIONAL) LTD</NonIndividualNameText></NonIndividualName><BusinessAddress><AddressDetails><State>NSW</State><Postcode>2000</Postcode></AddressDetails></BusinessAddress></MainEntity><ASICNumber ASICNumberType="undetermined">000000948</ASICNumber><GST status="ACT" GSTStatusFromDate="20000701" /><OtherEntity><NonIndividualName type="TRD"><NonIndividualNameText>QBE INSURANCE (INTERNATIONAL) LIMITED</NonIndividualNameText></NonIndividualName></OtherEntity></ABR>
<ABR recordLastUpdatedDate="20190531" replaced="N"><ABN status="CAN" ABNStatusFromDate="20190501">11000002568</ABN><EntityType><EntityTypeInd>PRV</EntityTypeInd><EntityTypeText>Australian Private Company</EntityTypeText></EntityType><MainEntity><NonIndividualName type="MN"><NonIndividualNameText>TOOHEYS PTY LIMITED</NonIndividualNameText></NonIndividualName><BusinessAddress><AddressDetails><State>NSW</State><Postcode>2141</Postcode></AddressDetails></BusinessAddress></MainEntity><ASICNumber ASICNumberType="undetermined">000002568</ASICNumber></ABR>
</Transfer>
Я начал идти по пути использования root.iter для каждого элемента, но я не мог понять, как использовать эту логику для получения всех нужных столбцов.
import xml.etree.ElementTree as et
root = et.parse('sample.xml').getroot()
dict_new = {}
for each in root.iter('ABN'):
#abr_last_updated_date =
print(each.tag)
print(each.attrib)
print(each.items())
print(each.text)
В конечном счете, если кто-то может поделиться тем, как перебирать каждый «xml-блок» (не уверен в правильности термина), и получить первые несколько столбцов, я уверен, что смогу решить остальные.