簡體   English   中英

使用python將新節點附加到XML中

[英]Append new node into XML using 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的所有節點。

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

我需要獲取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>

ElementTree庫不會轉儲具有多個根元素的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM