5

Python と lxml を使用して XML ファイルを出力しようとしています。

ただし、タグにテキストがない場合、タグ自体が閉じないことに気付きました。この例は次のようになります。

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

これの出力は次のとおりです。

<document>
<test/>
</document

出力を次のようにしたい:

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

したがって、基本的には、テキストを持たないが、属性値に使用されているタグを閉じたいと考えています。それ、どうやったら出来るの?また、そのようなタグは何と呼ばれますか? ググればよかったのですが、検索の仕方がわかりません。

4

4 に答える 4

7

<test></test><test/>はまったく同じ意味であることに注意してください。あなたが望むのは、テストタグが実際に単一の改行で構成されるテキストを持つことです。ただし、通常、テキストのない空のタグは と書かれて<test/>おり、 と表示することを主張するのはほとんど意味がありません<test></test>

于 2010-05-05T07:53:43.393 に答える
7

他の人に役立つ可能性がある場合に備えて、@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>'
于 2014-07-26T15:52:48.920 に答える
2

lxml.html.tostring を使用して HTML にシリアル化します

import lxml.html
root = lxml.html.fromstring(mydocument)
print(lxml.html.tostring(root))
于 2010-05-05T07:54:50.183 に答える