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

How do you get original text from etree object

我找不到这方面的文档。

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

对象是通过执行生成的:

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

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

我找到了对 tostring 函数的引用,但那似乎是一个无效函数。

想法?

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

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

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

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>'