关闭lxml中没有文本的标记

use*_*312 4 python lxml

我正在尝试使用Python和lxml输出XML文件

但是,我注意到一件事,如果标签没有文本,它就不会自行关闭.一个例子是:

root = etree.Element('document')
rootTree = etree.ElementTree(root)
firstChild = etree.SubElement(root, 'test')
Run Code Online (Sandbox Code Playgroud)

这个输出是:

<document>
<test/>
</document
Run Code Online (Sandbox Code Playgroud)

我希望输出为:

<document>
<test>
</test>
</document>
Run Code Online (Sandbox Code Playgroud)

所以基本上我想关闭一个没有文本的标签,但是用于属性值.我怎么做?而且,这样的标签叫什么?我会用谷歌搜索它,但我不知道如何搜索它.

Fra*_*ank 7

请注意,<test></test><test/>意味着完全一样的东西.你想要的是test-tag实际上有一个包含在单个换行符中的文本.但是,通常会写一个没有文本的空标记,<test/>并且坚持将其显示为没有意义<test></test>.


gon*_*aao 6

为了澄清@ymv答案,以防其他人有所帮助:

from lxml import etree

root = etree.Element('document')
rootTree = etree.ElementTree(root)
firstChild = etree.SubElement(root, 'test')

print(etree.tostring(root, method='html'))
### b'<document><test></test></document>'
Run Code Online (Sandbox Code Playgroud)