我正在尝试使用Python和lxml
输出XML文件但是,我注意到一件事,如果标签没有文字,它就不会自行关闭。这方面的一个例子是:
root = etree.Element('document')
rootTree = etree.ElementTree(root)
firstChild = etree.SubElement(root, 'test')
这个输出是:
<document>
<test/>
</document
我希望输出为:
<document>
<test>
</test>
</document>
所以基本上我想关闭一个没有文本的标签,但是用于属性值。我怎么做?而且,这样的标签叫什么?我会用谷歌搜索它,但我不知道如何搜索它。
答案 0 :(得分:7)
请注意,<test></test>
和<test/>
的含义完全相同。你想要的是test-tag实际上有一个包含在单个换行符中的文本。但是,没有文字的空标记通常写为<test/>
,坚持将其显示为<test></test>
毫无意义。
答案 1 :(得分:5)
澄清@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>'
答案 2 :(得分:2)
使用lxml.html.tostring序列化为HTML
import lxml.html
root = lxml.html.fromstring(mydocument)
print(lxml.html.tostring(root))