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

2024-09-30 01:37:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用lxml读取来自awsrestapi的响应,但没有任何运气。我可以很容易地解析响应并打印它,但是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函数,但是什么都找不到。你知道吗

如何在这种类型的文档上使用此库?你知道吗


Tags: 函数文档nodehttprootfindlxmlxpath
1条回答
网友
1楼 · 发布于 2024-09-30 01:37:18

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

>>> 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>

相关问题 更多 >

    热门问题