2016-08-09 10 views
0

にそれを追加するとき、私はこのようになりますXMLを持って消えPythonのminidom:</p> <pre><code><example> <para> <phrase>child_0</phrase> child_1 <phrase>child_2</phrase> </para> </example> </code></pre> <p>と私はそれが次のようになりたい::の#textノードは新しい親ノード

<foo> 
    <phrase>child_0</phrase> 
    child_1 
    <phrase>child_2</phrase> 
</foo> 

シンプル、右?私は新しい親ノード - <foo> - を作成し、次に<para>ノードを反復し、新しい<foo>ノードに子を追加します。

奇妙なことは、私がそうしようとするとchild_1(テキストノード)が消えることです。私は単に<para>ノードを反復処理した場合、私はこれを取得:

>>> for p in para.childNodes: 
     print p.nodeType 
1 
3 
1 

だから3つのノードが存在し、そして真ん中の一つがテキストノードです。しかし、それを新しい<foo>ノードに追加しようとすると、それはできません。

>>> for p in para.childNodes: 
     foo_node.appendChild(p) 

>>> print foo_node.toprettyxml() 
<foo> 
    <phrase>child_0</phrase> 
    <phrase>child_2</phrase> 
</foo> 

@#$%&*!は何が起こっていますか?

答えて

0

まあ、ここに私自身の質問に答えています。

appendChild()機能は、ノードの<para>リストから子ノードを削除し、そのインデックスは各反復と同期しなくなるにつれて、あなたは効果的に他のすべての要素をスキップします。解決策は、ノードのコピーを追加することです。

for p in para.childNodes: 
    p_copy = p.cloneNode(deep=True) 
    foo_node.appendChild(p_copy) 
関連する問題