首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中解析amazon xml

在python中解析amazon xml
EN

Stack Overflow用户
提问于 2013-01-22 14:05:52
回答 1查看 981关注 0票数 0

我从Amazon Web-Service获取了以下XML。

代码语言:javascript
复制
<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>

当我尝试提取排名时。

代码语言:javascript
复制
xmldoc = minidom.parse(response)
itemlist = xmldoc.getElementsByTagName('aws:Rank')[0]

xmlData=itemlist.replace('<aws:Rank>','').replace('</aws:Rank>','')
print xmlData

它会给我一个错误。

代码语言:javascript
复制
AttributeError: Element instance has no attribute 'replace'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-22 15:36:04

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

由于您是通过使用=getElementsByTagName('aws:Rank')[0]选择element (这是一个Element对象),因此您只有一件事要做。

您需要的数据可以通过以下方式访问:

代码语言:javascript
复制
itemlist.firstChild.data

代码语言:javascript
复制
itemlist.firstChild.nodeValue

(@root,你说得对,我不知道你为什么被否决了)

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

可能更清楚的是下面的代码片段:

代码语言:javascript
复制
xmldoc = minidom.parse(response)
xmlElement = xmldoc.getElementsByTagName('aws:Rank')[0]
xmlData = xmlElement.firstChild.nodeValue
print xmlData

但老实说,您可能希望查看minidom中Element对象的信息:

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14452523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档