我从Amazon Web-Service获取了以下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>当我尝试提取排名时。
xmldoc = minidom.parse(response)
itemlist = xmldoc.getElementsByTagName('aws:Rank')[0]
xmlData=itemlist.replace('<aws:Rank>','').replace('</aws:Rank>','')
print xmlData它会给我一个错误。
AttributeError: Element instance has no attribute 'replace'发布于 2013-01-22 15:36:04
这里的问题是,您正在尝试对XML元素使用replace,该元素既不是列表也不是字符串,它应该具有.replace()。
由于您是通过使用=getElementsByTagName('aws:Rank')[0]选择element (这是一个Element对象),因此您只有一件事要做。
您需要的数据可以通过以下方式访问:
itemlist.firstChild.data或
itemlist.firstChild.nodeValue(@root,你说得对,我不知道你为什么被否决了)
现在,我在解析该XML时遇到了一些问题,因为名称空间没有绑定,但这不是什么大问题。
可能更清楚的是下面的代码片段:
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
https://stackoverflow.com/questions/14452523
复制相似问题