【问题标题】:Element Tree : Can't build root tree when getting XML from webpage元素树:从网页获取 XML 时无法构建根树
【发布时间】:2013-06-19 22:20:17
【问题描述】:

我正在尝试解析我从网上下载的 XML 页面。

import requests
url = "http://www.w3schools.com/xml/cd_catalog.xml"
XML = requests.get(url)
print XML.content

tree = ET.ElementTree(XML)
root = tree.getroot()

print root.tag, root.attrib

我尝试执行此操作时遇到两个错误之一

对于上面的示例网页 AttributeError:“响应”对象没有属性“标签”

对于我正在查看的实际 XML 站点 AttributeError: 'str' 对象没有属性 'tag'

但是,如果我只是将下载的 XML 复制并粘贴到 .xml 文件中并打开它,它可以正常工作,没有错误。有谁知道如何解决这些问题..?

【问题讨论】:

    标签: python xml elementtree


    【解决方案1】:

    你需要解析响应体,而不是响应对象:

    root = ET.fromstring(XML.content) # no .getroot() call required
    

    或者传入一个文件对象:

    XML = requests.get(url, stream=True)
    tree = ET.parse(XML.raw)
    root = tree.getroot()
    

    如果流被压缩,后者可能会失败;原始文件对象不会为您解压缩。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多