63

私はlxmlを使用してXMLファイルを最初から作成しています。このようなコードを持っている:

from lxml import etree

root = etree.Element("root")
root.set("interesting", "somewhat")
child1 = etree.SubElement(root, "test")

クラスのメソッドをElement使用してルートオブジェクトをxmlファイルに書き込むにはどうすればよいですか?write()ElementTree

4

5 に答える 5

78

要素から文字列を取得し、 lxml チュートリアルからそれを書くことができます

str = etree.tostring(root, pretty_print=True)

エンコーディングを設定するには、tostring のドキュメントを参照してください。これは Python 2 で書かれています。Python 3 では、ファイルに直接書き込むことができるバイナリ文字列が返されますが、これはおそらくコードで必要なものではありません。

または要素ツリーに変換します(最初はファイルハンドルに書き込みますが、これを書いたときに見逃したか、新しいので、この回答に従ってファイル名にすることができます)

et = etree.ElementTree(root)
et.write('output.xml', pretty_print=True)
于 2010-05-14T10:04:03.610 に答える
12

以下のコードを試すことができます。

from lxml import etree as ET

root = ET.Element('Doc')
level1 = ET.SubElement(root, 'S')
main = ET.SubElement(level1, 'Text')
main.text = 'Thanks for contributing an answer to Stack Overflow!'
second = ET.SubElement(level1, 'Tokens')
level2 = ET.SubElement(second, 'Token', word=u"low")


level3 = ET.SubElement(level2, 'Morph')
second1 = ET.SubElement(level3, 'Lemma')
second1.text = 'sdfs'
second1 = ET.SubElement(level3, 'info')
second1.text = 'qw'

level4 = ET.SubElement(level3, 'Aff')
second1 = ET.SubElement(level4, 'Type')
second1.text = 'sdfs'
second1 = ET.SubElement(level4, 'Suf')
second1.text = 'qw'

tree = ET.ElementTree(root)
tree.write('output.xml', pretty_print=True, xml_declaration=True,   encoding="utf-8")
于 2017-04-23T05:28:10.523 に答える