当我使用文件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)
答案 0 :(得分:1)
那是因为fromstring()
会直接返回根元素:
从字符串中解析XML文档或片段。返回根节点(或解析器目标返回的结果)。
而parse()
会返回ElementTree
个对象:
返回一个使用source元素加载的ElementTree对象。
在这种情况下,使用getroot()
来获取根元素:
tree = objectify.parse(f)
root = tree.getroot()