4

私はこのようなサンプルxmlファイルを持っています:

<root>
   She
   <opt>went</opt>
   <opt>didn't go</opt>
   to school.
</root>

の名前のサブ要素を作成し、そのすべての内容をその中に入れたいと思います。あれは、

<root>
   <sentence>
       She
       <opt>went</opt>
       <opt>didn't go</opt>
       to school.
   </sentence>
</root>

ElementTreeまたはlxmlを使用してサブ要素を作成するのは簡単ですが、「彼女」から「学校」までの選択方法がわかりません。一斉に。

import lxml.etree as ET
ET.SubElement(root, 'sentence')
I'm lost...
4

1 に答える 1

3

逆に行うこともできます:(サブ要素を追加する代わりに、新しい親を追加します。)つまり、rootタグをに変更しsentence、新しいroot要素を作成して、古いroot(現在sentence)を新しいroot:に挿入します。

import lxml.etree as ET

content = '''\
<root>
   She
   <opt>went</opt>
   <opt>didn't go</opt>
   to school.
</root>'''

root = ET.fromstring(content)
root.tag = 'sentence'
newroot = ET.Element('root')
newroot.insert(0,root)
print(ET.tostring(newroot))

# <root><sentence>
#    She
#    <opt>went</opt>
#    <opt>didn't go</opt>
#    to school.
# </sentence></root>
于 2013-02-01T03:10:49.093 に答える