[英]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.