如何使用lxml查找AWS响应中的元素(名称空间问题?)

时间:2014-02-04 11:13:22

标签: python lxml

我尝试使用lxml从AWS REST API读取响应,但没有任何运气。我可以轻松地解析响应并打印它,但findxpath函数都找不到任何内容。例如,请参阅此文档片段:

<DistributionConfig xmlns="http://cloudfront.amazonaws.com/doc/2013-11-11/">
  <CallerReference>e6d6909d-f1ed-47f1-83d9-290acf10f324</CallerReference>
  <Aliases>
    <Quantity>1</Quantity>
    <Items>

这段代码:

from lxml import etree
root = etree.XML( ... )
node = root.find( 'Quantity' ) 

node始终为None。我尝试了各种xpath,例如//Quanity.//Quantity以及xpath功能,但无法找到任何内容。

如何在此类文档中使用此库?

1 个答案:

答案 0 :(得分:1)

似乎你还需要提供元素的命名空间:

>>> root.find('.//aws:Quantity', namespaces={'aws': 'http://cloudfront.amazonaws.com/doc/2013-11-11/'})
<Element {http://cloudfront.amazonaws.com/doc/2013-11-11/}Quantity at 0xb6c16aa4>