将数据从xml提取到Excel(Python 2.7)

时间:2017-01-12 23:21:33

标签: python xml excel python-2.7

我正在尝试从XML文件中提取一些数据并使用这些信息创建Excel。

XML文件:

<UniversalTransaction>
    <TransactionInfo>
        <DataContext>
            <DataSourceCollection>
                <DataSource>
                    <Type>AccountingInvoice</Type>
                    <Key>AR INV 00001006</Key>
                </DataSource>
            </DataSourceCollection>

            <Company>
                <Code>DCL</Code>
                <Country>
                    <Code>CL</Code>
                    <Name>Chile</Name>
                </Country>
                <Name>Your Chile Corp</Name>
            </Company>
...etc

然后我在python 2.7中创建了这段代码

import xml.etree.ElementTree as ET
import xlwt
from datetime import datetime

tree = ET.parse('ar.xml')
root = tree.getroot()

#extract xml
invoice = root.findall('DataSource')
arinv = root.find('Key').text
country = root.findall('Company')
ctry = root.find('Name').text

wb = xlwt.Workbook()
ws = wb.add_sheet('A Test Sheet')

ws.write(0, 0, arinv)
ws.write(0, 1, ctry)

wb.save('example2.xls')

但是我收到了这个错误:

arinv = root.find('Key').text
'NoneType' object has no attribute 'text' 

我想这与

相同
ctry = root.find('Name').text

此外,当我将代码的“extract xml”部分更改为此

for ar in root.findall('DataContext'):
    nro = []
    ctry = []
    inv = ar.find('Key').text
    nro.append(inv)
    country = ar.find('Name').text
    ctry.append(country)

我收到以下错误:

ws.write(0, 0, arinv)
name 'arinv' is not defined
然后再次,我猜它与“ctry”相同

Windows 10,python 2.7

我会帮助你,谢谢。

1 个答案:

答案 0 :(得分:0)

最好提出缩短的问题 - 没有你的一堆上下文代码。当你仔细尝试分解确切的简短问题时,你可能会找到一个解决方案。

根据文档,Element.find基本上只能找到直接的孩子。您需要使用一些XPath(在文档中查看XPath表达式),如

root.findall('.//Key')[0].text

(假设Key始终存在,在文档中包含文本和唯一;即未经验证)