在python中解析amazon-xml

2024-04-25 05:44:26 发布

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

我从amazonwebservice得到了以下XML。在

<aws:UrlInfoResponse>
    <aws:Response>
        <aws:OperationRequest>
            <aws:RequestId>8789797</aws:RequestId>
        </aws:OperationRequest>
        <aws:UrlInfoResult>
            <aws:Alexa>
                <aws:TrafficData>
                    <aws:DataUrl type="canonical">google.com/</aws:DataUrl>
                    <aws:Rank>1</aws:Rank>
                </aws:TrafficData>
            </aws:Alexa>
        </aws:UrlInfoResult>
        <aws:ResponseStatus>
            <aws:StatusCode>Success</aws:StatusCode>
        </aws:ResponseStatus>
    </aws:Response>
</aws:UrlInfoResponse>

当我试图提取军衔时。在

^{pr2}$

它给了我错误。在

AttributeError: Element instance has no attribute 'replace'

Tags: awsresponseservicexmlalexarankrequestidamazonweb
1条回答
网友
1楼 · 发布于 2024-04-25 05:44:26

这里的问题是,您试图对一个XML元素使用replace,该元素不是一个列表,也不是一个字符串,它将具有.replace()。在

由于您是通过使用=getElementsByTagName('aws:Rank')[0]来选择元素(这是一个元素对象),所以您只有一件事需要处理。在

您需要的数据可以通过以下方式获得:

itemlist.firstChild.data

或者

^{pr2}$

(@root,你有这个权利,我不知道你为什么被否决)

现在我在解析XML时遇到了一些问题,因为名称空间没有绑定,但这并不是什么大问题。在

这样的片段可能更清楚:

xmldoc = minidom.parse(response)
xmlElement = xmldoc.getElementsByTagName('aws:Rank')[0]
xmlData = xmlElement.firstChild.nodeValue
print xmlData

但老实说,您可能需要查看minidom中元素对象的信息:

http://docs.python.org/2/library/xml.dom.html#dom-element-objects

相关问题 更多 >