Извлечение данных из XML-файла с использованием Python и запись в xlsxwriter - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь извлечь вывод файла XML с помощью python и записать его в таблицу Excel с помощью модуля xlsxwriter.

Ниже приведен код, который я пробовал:

row = 4
col = 0
row1 = 5
col1 = 0

for elem in tree.iter():
    worksheet1.write(row, col, elem.tag)
    for subelem in elem:
        worksheet1.write(row1, col1, subelem.text)
    col += 1
    col1 +=1

Вышеприведенное возвращает значения заголовков, но не возвращает ни одного из соответствующих значений.

Я пытаюсь сохранить его таким образом, чтобы в первой строке был список всех меток, а в строке 2 - соответствующие данные, указанные в файле xml.

Данные, с которыми я пытаюсь работать:

<?xml version="1.0" encoding="UTF-8"?><PARENT>
  <CHILD>
<Action>add</Action>
<BillNo>6446</BillNo>
<CustomerID/>
<Customer>
  <Name/>
  <CustCode>ABC</CustCode>
</Customer>
<Remarks>
  <Remark>
HELLO</Remark>
  <Remarks>123</Remarks>
</Remarks>
<Store>sf</Store>
<StoreType/>
<Urgency>false</Urgency>
<StoreTypes>
  <StoreType>
    <Action>new</Action>
    <Name>Type1</Name>
    <StoreID>46433</StoreID>
    <StopAlias>1</StopAlias>
    <Type>45643</Type>
    <Type1>dsff</Type1>
    <Type2>egrg</Type2>
    <Type3>geetf</Type3>
    <Type4/>
    <Type5>khfd</Type5>
    <Type6>sfgdg</Type6>
    <Type7>dsfee</Type7>
  </StoreType>
</StoreTypes>
<Category1>
  <CatGroup>
    <Action>new</Action>
    <D1>hello</D1>
    <D2>world</D2>
    <D3>2</D3>
    <Type>how</Type>
    <D4>dfvf</D4>
    <D5>david</D5>
    <D6>f5453</D6>
    <D7>this</D7>
    <D8>is</D8>
    <D9>a</D9>
    <Type4/>
    <Feedback/>
    <Customer>
      <F1>test</F1>
      <F2>remark</F2>
      <F3>file</F3>
    </Customer>
    <R1>
      <RR1>for</RR1>
      <RR1>test</RR1>
      <RR1>tested</RR1>
    </R1>
  </CatGroup>
 </Category1>
 </CHILD>
 </PARENT>

Может кто-нибудь посоветовать, где я ошибаюсь.Я пытаюсь сохранить этот универсальный без определения имени столбцов во время цикла.Спасибо

1 Ответ

0 голосов
/ 28 ноября 2018

Ознакомьтесь с этой stackabuse статьей или xml.etree.ElementTree ссылкой на документацию по python.

Оба содержат пошаговые примеры того, как читать xmlдокументы.

Вот пример кода из первой ссылки:

from xml.dom import minidom

# parse an xml file by name
mydoc = minidom.parse('items.xml')

items = mydoc.getElementsByTagName('item')

# one specific item attribute
print('Item #2 attribute:')  
print(items[1].attributes['name'].value)

# all item attributes
print('\nAll attributes:')  
for elem in items:  
    print(elem.attributes['name'].value)

# one specific item's data
print('\nItem #2 data:')  
print(items[1].firstChild.data)  
print(items[1].childNodes[0].data)

# all items data
print('\nAll item data:')  
for elem in items:  
    print(elem.firstChild.data)
...