lxml内で要素を指定すると、その要素をすべて読み込んで再作成しなくても、xml文書のどこかで要素全体を移動できますか?私の最も良い例は両親を変えることです。私は少しドキュメントの周りをうろついたが、多くの運がなかった。前もって感謝します!要素全体をlxml.etreeで移動する
7
A
答えて
14
.append
、.insert
およびその他の操作が持つノードを移動するときにデフォルトで
>>> from lxml import etree
>>> tree = etree.XML('<a><b><c/></b><d><e><f/></e></d></a>')
>>> node_b = tree.xpath('/a/b')[0]
>>> node_d = tree.xpath('/a/d')[0]
>>> node_d.append(node_b)
>>> etree.tostring(tree) # complete 'b'-branch is now under 'd', after 'e'
'<a><d><e><f/></e><b><c/></b></d></a>'
>>> node_f = tree.xpath('/a/d/e/f')[0] # Nothing stops us from moving it again
>>> node_f.append(node_a) # Now 'a' is deep under 'f'
>>> etree.tostring(tree)
'<a><d><e><f><b><c/></b></f></e></d></a>'
は注意してくださいことをやりますテールテキスト。 lxmlのテールテキストでは、ノードに属していて、それに沿って移動します。 (ノードを削除する場合も、その尾のテキストも削除されます)
>>> tree = etree.XML('<a><b><c/></b>TAIL<d><e><f/></e></d></a>')
>>> node_b = tree.xpath('/a/b')[0]
>>> node_d = tree.xpath('/a/d')[0]
>>> node_d.append(node_b)
>>> etree.tostring(tree)
'<a><d><e><f/></e><b><c/></b>TAIL</d></a>'
は、時にはそれは、所望の効果だが、時にはあなたはそのようなものが必要になります。私がまさに必要
>>> tree = etree.XML('<a><b><c/></b>TAIL<d><e><f/></e></d></a>')
>>> node_b = tree.xpath('/a/b')[0]
>>> node_d = tree.xpath('/a/d')[0]
>>> node_a = tree.xpath('/a')[0]
>>> # Manually move text
>>> node_a.text = node_b.tail
>>> node_b.tail = None
>>> node_d.append(node_b)
>>> etree.tostring(tree)
>>> # Now TAIL text stays within its old place
'<a>TAIL<d><e><f/></e><b><c/></b></d></a>'
0
既存の要素にサブ要素を追加する.append()
、.insert()
メソッドを使用することができます。
>>> from lxml import etree
>>> from_ = etree.fromstring("<from/>")
>>> to = etree.fromstring("<to/>")
>>> to.append(from_)
>>> etree.tostring(to)
'<to><from/></to>'
関連する問題
- 1. lxml.etree、element.textは要素からテキスト全体を返しません
- 2. 最初まで移動せずに要素全体をヤンクすることは可能ですか?
- 3. div要素全体をxピクセル上に移動するにはどうすればよいですか?
- 4. javascriptで移動する要素
- 5. Xna全体でモデルを移動するには?
- 6. Androidで画面全体に画像を移動する方法
- 7. DOM要素を移動するメソッド
- 8. スクロールの要素を移動する
- 9. 配列の要素を移動する#
- 10. ループ内でdom要素を移動
- 11. jqueryで要素を上下に移動
- 12. ページ全体にランダムな量の画像を移動する
- 13. getElementByIdから返された要素全体を出力する
- 14. jquery要素のhtml全体を取得する方法
- 15. XCode:ストーリーボードエディタでのUI要素の移動
- 16. jqGrid 4.0 bindKeysメソッド上下矢印キーでグリッド全体を移動
- 17. スプライトを画面全体に無作為に移動させる
- 18. XMLネットワークストリームから要素全体を読み取る
- 19. 要素をリストボックスから別の要素に移動
- 20. ドロップダウンプッシュ要素をページ下に移動
- 21. Boost :: ptr_list要素を前面に移動
- 22. 要素全体を文字列として返すJava xpath
- 23. 全幅divで浮動要素をセンタリングする
- 24. Java ArrayListの要素をJavaでファイルに移動するには
- 25. 高さ全体をカバーするリスト要素を取得する方法 - CSS IE8リスト要素の高さ
- 26. joomlaサイト全体を別のdirectoy/subdomainに移動
- 27. フォルダからフォルダ全体をAndroidエミュレータに移動
- 28. sqlクエリでフェッチされる要素全体を格納します
- 29. PHP移動配列要素が
- 30. jQuery - 関連要素の移動
を。ありがとう! – Cryptite
Type-o ?: node_aはnode_f.append(node_a)行のnode_bでなければなりません# 'a'は 'f'の下にあります(コメント 'a'も修正します)。 –