Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用lxml查找AWS响应中的元素(名称空间问题?)_Python_Lxml - Fatal编程技术网

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

Python 如何使用lxml查找AWS响应中的元素(名称空间问题?),python,lxml,Python,Lxml,我正在尝试使用lxml读取来自awsrestapi的响应,但没有任何运气。我可以很容易地解析响应并打印它,但是find或xpath函数都找不到任何东西。例如,以此文档片段为例: <DistributionConfig xmlns="http://cloudfront.amazonaws.com/doc/2013-11-11/"> <CallerReference>e6d6909d-f1ed-47f1-83d9-290acf10f324</CallerRefere

我正在尝试使用lxml读取来自awsrestapi的响应,但没有任何运气。我可以很容易地解析响应并打印它,但是
find
xpath
函数都找不到任何东西。例如,以此文档片段为例:

<DistributionConfig xmlns="http://cloudfront.amazonaws.com/doc/2013-11-11/">
  <CallerReference>e6d6909d-f1ed-47f1-83d9-290acf10f324</CallerReference>
  <Aliases>
    <Quantity>1</Quantity>
    <Items>
节点
始终为
。我尝试了各种xpath,比如
//Quantity
//Quantity
,还有
xpath
函数,但都找不到任何东西


如何在此类型的文档上使用此库?

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

>>> 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>
>>root.find('.//aws:Quantity',名称空间={'aws':'http://cloudfront.amazonaws.com/doc/2013-11-11/'})

查找
不在此下降。也许
root.find('alias/Quantity')
可以吗?你也可以通配符
alias
(使用
root.find('*/Quantity')
;我认为它应该可以工作)。好的,这似乎可以工作。您知道是否需要为整个文档指定
名称空间
映射吗?我不希望每次调用都必须键入该部分。嗯,
root.filter
调用中
namespaces
参数的值只是一个字典。您可以将该字典分配给变量并重用它(
root.find(“…”,namespaces=nsdict)
)。
>>> 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>