关闭lxm中没有文本的标记

2024-03-29 13:02:29 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

其输出为:

^{pr2}$

我希望输出是:

<document>
<test>
</test>
</document>

所以基本上,我想关闭一个没有文本的标记,但是用于属性值。我该怎么做?还有,这样的标签叫什么?我本来会在谷歌上搜索的,但我不知道怎么去搜索。在


Tags: 文件test文本root标签xmlelementdocument
3条回答

为了澄清@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>'

注意,<test></test>和{}的意思完全相同。您需要的是测试标记实际上有一个包含在单个换行符中的文本。但是,没有文本的空标记通常被写为<test/>,并且坚持它显示为<test></test>是没有意义的。在

使用lxml.html.tostring序列化为HTML

import lxml.html
root = lxml.html.fromstring(mydocument)
print(lxml.html.tostring(root))

相关问题 更多 >