如何查看 lxml 元素的文本表示形式?

问题描述 投票:0回答:2

如果我使用 lxml 解析 XML 文档,是否可以查看元素的文本表示形式? 我尝试这样做:

print repr(node)

但是这个输出

<Element obj at b743c0>

我可以使用什么来查看节点是否存在于 XML 文件中?有没有什么

to_xml
方法之类的?

python xml lxml
2个回答
52
投票

来自 http://lxml.de/tutorial.html#serialization

>>> root = etree.XML('<root><a><b/></a></root>')

>>> etree.tostring(root)
b'<root><a><b/></a></root>'

>>> print(etree.tostring(root, xml_declaration=True))
<?xml version='1.0' encoding='ASCII'?>
<root><a><b/></a></root>

>>> print(etree.tostring(root, encoding='iso-8859-1'))
<?xml version='1.0' encoding='iso-8859-1'?>
<root><a><b/></a></root>

>>> print(etree.tostring(root, pretty_print=True))
<root>
  <a>
    <b/>
  </a>
</root>

0
投票

tostring()
转换为字节对象。要转换为
str
对象,请将
encoding="unicode"
传递给
tostring()
或使用
tounicode()
代替。这可以实现真正漂亮的打印。

from lxml import etree
root = etree.XML('<root><a><b/></a></root>')
s1 = etree.tostring(root, pretty_print=True, encoding="unicode")
s2 = etree.tounicode(root, pretty_print=True)

print(s1)
<root>
  <a>
    <b/>
  </a>
</root>

print(s2)

<root>
  <a>
    <b/>
  </a>
</root>
© www.soinside.com 2019 - 2024. All rights reserved.