【发布时间】:2020-12-31 00:04:19
【问题描述】:
我想在每个 bill 中得到正确的输出 userID 、 itemID 和相关的 balance 并导出结果
我使用以下代码得到重复的 itemID/userID:
每个“用户”可以有许多“项目”,每个项目都有一个余额。每个项目的用户ID可以重复
userid = node.findtext('./userID')
itemids = node.findall('./bill/item/itemID')
bills = node.findall(".//bill/balance")
for item in itemids:
for bill in bills:
print(userid, item.text, bill.text)
这里是 XML 的示例
<user>
<userID>10269</userID>
<name>
<displayName>SAFIYA NASSER ABDULLAH AL SIYABI</displayName>
<firstName>SAFIYA</firstName>
<middleName>NASSER ABDULLAH</middleName>
<lastName>AL SIYABI</lastName>
</name>
<library>MAIN</library>
<numberOfBills>3</numberOfBills>
<bill>
<item>
<callNumber>BP173.4 .B57 2003</callNumber>
<copyNumber>1</copyNumber>
<itemID>423999</itemID>
<library>MAIN</library>
<dateCreated>2009-02-15</dateCreated>
<isPermanent>true</isPermanent>
</item>
<amount currency="OR">1.20</amount>
<reason>OVERDUE</reason>
<balance currency="OR">1.20</balance>
<library>MAIN</library>
</bill>
<bill>
<item>
<callNumber>BP173.3 .G423 2004</callNumber>
<copyNumber>2</copyNumber>
<itemID>429053</itemID>
<library>MAIN</library>
<dateCreated>2009-02-15</dateCreated>
<isPermanent>true</isPermanent>
</item>
<amount currency="OR">1.20</amount>
<reason>OVERDUE</reason>
<balance currency="OR">1.20</balance>
<library>MAIN</library>
</bill>
<bill>
<item>
<callNumber>BP173.3 .N34 2003</callNumber>
<copyNumber>1</copyNumber>
<itemID>423991</itemID>
<library>MAIN</library>
<dateCreated>2009-02-15</dateCreated>
<isPermanent>true</isPermanent>
</item>
<amount currency="OR">24.00</amount>
<reason>OVERDUE</reason>
<balance currency="OR">24.00</balance>
<library>MAIN</library>
</bill>
</user>
提前致谢
【问题讨论】:
标签: python xml elementtree