lxml.objectify.parse 在 fromstring 工作时失败
lxml.objectify.parse fails while fromstring works
在我使用文件 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' object has no attribute 'tag'
with open(pelogPath,'r', encoding='utf-8') as f:
#xml = f.read()
root = objectify.parse(f)
print(root.tag)
那是因为 fromstring()
会直接 return 根元素:
Parses an XML document or fragment from a string. Returns the root node (or the result returned by a parser target).
而 parse()
会 return 一个 ElementTree
对象:
Return an ElementTree object loaded with source elements.
在这种情况下使用 getroot()
获取根元素:
tree = objectify.parse(f)
root = tree.getroot()
在我使用文件 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' object has no attribute 'tag'
with open(pelogPath,'r', encoding='utf-8') as f:
#xml = f.read()
root = objectify.parse(f)
print(root.tag)
那是因为 fromstring()
会直接 return 根元素:
Parses an XML document or fragment from a string. Returns the root node (or the result returned by a parser target).
而 parse()
会 return 一个 ElementTree
对象:
Return an ElementTree object loaded with source elements.
在这种情况下使用 getroot()
获取根元素:
tree = objectify.parse(f)
root = tree.getroot()