当fromstring工作时,lxml.objectify.parse失败

时间:2016-03-29 19:56:20

标签: python python-3.x io lxml.objectify

当我使用文件IO而不是字符串IO时,为什么lxml.objectify.parse失败了。

以下代码有效:

with open(logPath,'r', encoding='utf-8') as f:
    xml = f.read()
    root = objectify.fromstring(xml)

print(root.tag)

以下代码失败,错误:

  

AttributeError:' lxml.etree._ElementTree'对象没有属性'标记'

with open(pelogPath,'r', encoding='utf-8') as f:
    #xml = f.read()
    root = objectify.parse(f)

print(root.tag)

1 个答案:

答案 0 :(得分:1)

那是因为fromstring()会直接返回根元素:

  

从字符串中解析XML文档或片段。返回根节点(或解析器目标返回的结果)。

parse()会返回ElementTree个对象:

  

返回一个使用source元素加载的ElementTree对象。

在这种情况下,使用getroot()来获取根元素:

tree = objectify.parse(f)
root = tree.getroot()