gpt4 book ai didi

python - 元素树 : How to parse subElements of child nodes

转载 作者:数据小太阳 更新时间:2023-10-29 02:05:02 25 4
gpt4 key购买 nike

我有一个 XML 树,我想使用 Elementtree 对其进行解析。我的 XML 看起来像

<?xml version="1.0" encoding="UTF-8"?>
<GetOrdersResponse xmlns="urn:ebay:apis:eBLBaseComponents">
<Ack>Success</Ack>
<Version>857</Version>
<Build>E857_INTL_APIXO_16643800_R1</Build>
<PaginationResult>
<TotalNumberOfPages>1</TotalNumberOfPages>
<TotalNumberOfEntries>2</TotalNumberOfEntries>
</PaginationResult>
<HasMoreOrders>false</HasMoreOrders>
<OrderArray>
<Order>
<OrderID>221362908003-1324471823012</OrderID>
<CheckoutStatus>
<eBayPaymentStatus>NoPaymentFailure</eBayPaymentStatus>
<LastModifiedTime>2014-02-03T12:08:51.000Z</LastModifiedTime>
<PaymentMethod>PaisaPayEscrow</PaymentMethod>
<Status>Complete</Status>
<IntegratedMerchantCreditCardEnabled>false</IntegratedMerchantCreditCardEnabled>
</CheckoutStatus>
</Order>
<Order> ...
</Order>
<Order> ...
</Order>
</OrderArray>
</GetOrdersResponse>

我想解析 XML () 的第 6 个子元素,我能够通过索引获取子元素的值。例如,如果我想要一阶订单的 OrderID,我可以使用 root[5][0][0].text。但是,我想按名称获取子元素的值。我尝试了以下代码,但它没有打印任何内容:

tree = ET.parse('response.xml')
root = tree.getroot()
for child in root:
try:
for ids in child.find('Order').find('OrderID'):
print ids.text
except:
continue

有人可以帮我解决他的问题吗?谢谢

最佳答案

由于 XML 文档具有命名空间声明 (xmlns="urn:ebay:apis:eBLBaseComponents"),因此在引用中的元素时必须使用通用名称文件。例如,您需要 {urn:ebay:apis:eBLBaseComponents}OrderID 而不仅仅是 OrderID

此代码段打印文档中的所有 OrderID:

from xml.etree import ElementTree as ET

NS = "urn:ebay:apis:eBLBaseComponents"

tree = ET.parse('response.xml')

for elem in tree.iter("*"): # Use tree.getiterator("*") in Python 2.5 and 2.6
if elem.tag == '{%s}OrderID' % NS:
print elem.text

参见 http://effbot.org/zone/element-namespaces.htm有关 ElementTree 和命名空间的详细信息。

关于python - 元素树 : How to parse subElements of child nodes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21531111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com