我正在尝试从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
我会帮助你,谢谢。
答案 0 :(得分:0)
最好提出缩短的问题 - 没有你的一堆上下文代码。当你仔细尝试分解确切的简短问题时,你可能会找到一个解决方案。
根据文档,Element.find
基本上只能找到直接的孩子。您需要使用一些XPath(在文档中查看XPath表达式),如
root.findall('.//Key')[0].text
(假设Key始终存在,在文档中包含文本和唯一;即未经验证)