我有一个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个子元素,我可以通过索引获得子元素的值。E、 g如果我想要第一个订单的OrderID,我可以使用root[5][0][0].text
。但是,我想通过名称得到子元素的值。我尝试了以下代码,但它不打印任何内容:
有人能帮我一下他的吗。谢谢
由于XML文档有一个名称空间声明(
xmlns="urn:ebay:apis:eBLBaseComponents"
),所以在引用文档中的元素时,必须使用universalnames。例如,您需要{urn:ebay:apis:eBLBaseComponents}OrderID
,而不仅仅是OrderID
。在此代码段打印文档中的所有orderID:
有关ElementTree和命名空间的详细信息,请参见http://effbot.org/zone/element-namespaces.htm。在
您可以先找到一个
OrderArray
,然后按名称迭代其子项:旁注。永远不要使用
except: continue
。它会隐藏任何异常,并使调试变得非常困难。在尽量避免把你的发现用链子拴住。如果您的第一个
find
没有找到任何内容,它将返回None
。在相关问题 更多 >
编程相关推荐