如何从etree对象获取原始文本

时间:2019-05-09 21:19:23

标签: python lxml

我在查找有关此文档时遇到麻烦。

我有一个lxml.etree._ElementTree类型的对象,正在尝试从中获取原始文本。

对象是通过执行以下操作生成的:

tree = etree.parse(content, parser=parser)

然后,当content不再可用时,我需要在脚本中进一步访问原始内容。我想通过执行tree的某些功能来获取该内容,但是我找不到与此有关的任何文档。

我发现对tostring函数的引用,但这似乎是无效的函数。

有想法吗?

2 个答案:

答案 0 :(得分:4)

tostring不是树对象的方法,而是lxml.etree库的方法。

所以尝试lxml.etree.tostring(tree)

请注意,这可能与原始文件不完全相同-应该解析为相同的XML,但是空格,换行符和其他格式可能会有所不同。同样,如果您对树进行了任何更改,显然它将与原始文件不匹配。

答案 1 :(得分:1)

tostring是有效的函数,也许您使用不正确。这是一个完全包含的示例:

from lxml import etree

text = """
<?xml version="1.0" ?>
<people>
  <person>
    <id>1</id>
    <name>Hal</name>
    <notes>Hal likes chocolate</notes>
  </person>
</people>"""

root = etree.fromstring(text)
etee.tostring(root)
# outputs the following
'<people>\n  <person>\n    <id>1</id>\n    <name>Hal</name>\n    <notes>Hal likes chocolate</notes>\n  </person>\n</people>'