XML 查找 child 标签的所有属性值

XML find all attribute values of a tag of a child

我想获取每个 child 的文本值和每个 child 的每个属性值。我可以获取文本值,但我无法一个一个地获取属性值并将每个属性值分配给一个变量。

我有以下 XML 文件:

<Transactions>
  <CardAuthorisation xmlns:xsi="http://...">
    <RecType>ADV</RecType>
    <AuthId>60874046</AuthId>
    <LocalDate>202008010000</LocalDate>
    <SettlementDate>202008</SettlementDate>
    <Card productid="16" PAN="64256700991593" product="MC" programid="AUST" branchcode="" />
  </CardAuthorisation>
</Transactions>

我有以下代码:

import xml.etree.ElementTree as et 
xFile = "test.XML"
xtree = et.parse(xFile)
xRoot = xtree.getroot()
for cardAuthorisation in xRoot.findall('CardAuthorisation'):
    recType = cardAuthorisation.find('./RecType').text
    authId = cardAuthorisation.find('./AuthId').text
    localDate = cardAuthorisation.find('./LocalDate').text
    settlementDate = cardAuthorisation.find('./SettlementDate').text
    #here is where I am having trouble with
    #pseudocode
    for every attribute in Card:
       card_productid = #the value of productid if not None else None
        .
        .
        .
       branchcode = #the value of branchcode if not None else None

这是我第一次使用 XML 个文件,我做了很多研究,但其中 none 个文件符合我的用例。任何帮助将不胜感激,提前致谢。

您可以按如下方式访问“Card”元素的属性:

card = cardAuthorisation.find('./Card')
for key in card.keys():
    print(key, card.get(key))

要获取所有 <Card> 标签和 <Card> 中的每个 attribute/value,您可以执行以下操作:

for c in cardAuthorisation.findall('Card'):
    for k, v in c.items():
        print(k, v)

打印:

 productid 16
 PAN 64256700991593
 product MC
 programid AUST
 branchcode