簡體   English   中英

如何將新節點添加到 XML 樹中,從 Python 中的列表中讀取?

[英]How to add new nodes into XML tree, reading from a list in Python?

我正在嘗試從list讀取並將值作為新節點添加到PythonXML

list = ['163','164','165']

在將列表值附加到節點trackingnumbers

xml應如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<trackingrequest>
<user>TAIL</user>
<password>20</password>
<trackingnumbers>
    <trackingnumber>163</trackingnumber>
    <trackingnumber>164</trackingnumber>
    <trackingnumber>165</trackingnumber>
</trackingnumbers>
</trackingrequest>

我已經做到了這一點,但我堅持在循環內創建dynamic variables ,這會在trackingnumbers內創建新節點

def GenerateXML():

    root = ET.Element("trackingrequest")
    m1 = ET.Element("user")
    root.append(m1)
    m1.text = 'TAIL'

    m2 = ET.Element("password")
    root.append(m2)
    m2.text = '20'

    m3 = ET.Element("trackingnumbers")
    root.append(m3)
    d = {}

    for i in range(list):
       d["trackingid_{0}".format(i)] = ET.SubElement(m3, "trackingnumber")
       d['trackingid_1'].text = i*2

    tree = ET.ElementTree(root)

這個想法是找到trackingnumbers並添加所需的子元素

import xml.etree.ElementTree as ET

lst = ['163', '164', '165']

xml = '''<?xml version="1.0" encoding="UTF-8"?>
<trackingrequest>
<user>TAIL</user>
<password>20</password>
<trackingnumbers>

</trackingnumbers>
</trackingrequest>'''

root = ET.fromstring(xml)
tracking_numbers = root.find('.//trackingnumbers')
for num in lst:
    tn = ET.SubElement(tracking_numbers, 'trackingnumber')
    tn.text = num
ET.dump(root)

輸出

<?xml version="1.0" encoding="UTF-8"?>
<trackingrequest>
   <user>TAIL</user>
   <password>20</password>
   <trackingnumbers>
      <trackingnumber>163</trackingnumber>
      <trackingnumber>164</trackingnumber>
      <trackingnumber>165</trackingnumber>
   </trackingnumbers>
</trackingrequest>

暫無
暫無

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

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