[英]How to properly find an index of a list ElementTree element
我想在根列表中找到一个特定的子元素,在本例中是 LocationSalesDetail。 打印树根列表后,您可以看到有一堆 LocationSalesDetail 实例,但是当我尝试将它们拉入索引时,它说找不到。 我查看了文档,但无法确切地看出我做错了什么,尽管我确信它非常简单。
tree = ET.parse('test.xml')
root = tree.getroot()
print(list(root))
list(root).index('LocationSalesDetail')
tree.write('test2.xml')
作为参考,test.xml 的粗略 XML 结构如下:
<SalesTransactions>
-->CompanyNumber
-->SendingSystem
-->LocationSalesDetail
---->InvoiceNumber
---->InvoiceInformation
-->LocationSalesDetail
---->InvoiceNumber
---->InvoiceInformation
-->LocationSalesDetail
---->InvoiceNumber
---->InvoiceInformation
因为你的XML文件结构不清晰,你到底要找什么,如果你要索引? 我为索引创建行号和列表号。 我假设您的 XML 文件看起来像这样 - 输入:
<?xml version="1.0" encoding="utf-8"?>
<SalesTransactions>
<CompanyNumber>my_customer</CompanyNumber>
<SendingSystem>
<LocationSalesDetail name="DE">
<InvoiceNumber>1</InvoiceNumber>
<InvoiceInformation>A</InvoiceInformation>
</LocationSalesDetail>
<LocationSalesDetail name="UK">
<InvoiceNumber>2</InvoiceNumber>
<InvoiceInformation>B</InvoiceInformation>
</LocationSalesDetail>
<LocationSalesDetail name="US">
<InvoiceNumber>3</InvoiceNumber>
<InvoiceInformation>C</InvoiceInformation>
</LocationSalesDetail>
</SendingSystem>
</SalesTransactions>
你可以使用enumerate()
创建一个元组列表:
import xml.etree.ElementTree as ET
tree = ET.parse('Invoice.xml')
root = tree.getroot()
Location_list = root.findall('.//LocationSalesDetail')
line_No = enumerate(root.iter())
for line in line_No:
#print(line[0], line[1].tag)
if line[1].tag =="LocationSalesDetail":
print(line[1].tag, " Line No:",line[0], line[1].get('name'))
print('\n')
for elem in enumerate(Location_list):
print("List No:", elem[0], elem[1].get('name'))
print('\n')
# ET.dump(root)
输出:
LocationSalesDetail Line No: 3 DE
LocationSalesDetail Line No: 6 UK
LocationSalesDetail Line No: 9 US
List No: 0 DE
List No: 1 UK
List No: 2 US
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.