2017-01-09 14 views
0

中規模のXMLファイルを作成するために以下のコードを記述しました。ここではループ内にノードを作成します。Pythonを使用してXMLに新しいノードを追加します。

import xml.etree.cElementTree as ET 
number = 0 

def xml_write(number,doc): 
    ET.SubElement(doc, "extra-TextID", used="true").text = ""+str(number) ##in each loop number will be changed from 0 to 9 

while number != 10: 
    doc = ET.Element("message") 
    xml_write(number,doc) 
    tree = ET.ElementTree(doc) 
    tree.write('XML_file.xml') 
    number = number + 1 

しかし、上記のコードを実行すると、最後のノード、つまり最後の行に "9"が表示されます。ファイル内のデータが置き換えられています。各ノードに0〜9を含むすべてのノードを取得するように、それを追加する方法。 ElementTreeのライブラリは、複数のルート要素とXMLをダンプしません

<?xml version="1.0"?> 
    -<message> 
     <source>Rain</source> 
     <translations language="Dev">Cyclone</translations> 
     <extra-TextID used="true">0</extra-TextID> 
    <message> 
    <?xml version="1.0"?> 
    -<message> 
     <source>Rain</source> 
     <translations language="Dev">Cyclone</translations> 
     <extra-TextID used="true">1</extra-TextID> 
    <message> 
    <?xml version="1.0"?> 
    -<message> 
     <source>Rain</source> 
     <translations language="Dev">Cyclone</translations> 
     <extra-TextID used="true">3</extra-TextID> 
    <message> 
     . 
     . 
     . 
    <?xml version="1.0"?> 
    -<message> 
     <source>Rain</source> 
     <translations language="Dev">Cyclone</translations> 
     <extra-TextID used="true">9</extra-TextID> 
    <message> 

答えて

1

<?xml version="1.0"?> 
    -<message> 
     <source>Rain</source> 
     <translations language="Dev">Cyclone</translations> 
     <extra-TextID used="true">9</extra-TextID> 
    <message> 

私はとxmlファイルを取得する必要があります。この種の出力をXMLファイルに入れたい場合は、生成された要素を手動で追加してください。

with open('XML_file.xml', 'wb') as f: 
    while number != 10: 
     doc = ET.Element("message") 
     xml_write(number, doc) 

     f.write(ET.tostring(doc, method="xml")) 

     number += 1 
+0

ありがとうございました。 – Ghost

関連する問題