簡體   English   中英

使用Python附加在XML元素上

[英]Append on XML element using Python

我有一個名為user_data.xml的xml,其中包含:

<?xml version="1.0"?>
<users>
<user name="Rocky" id="1" age="38"/>
<user name="Steve" id="2" age="50"/>
<user name="Melinda" id="3" age="38"/>
</users>

我想在用戶內部添加新元素,例如:

<?xml version="1.0"?>
<users>
<user name="Rocky" id="1" age="38"/>
<user name="Steve" id="2" age="50"/>
<user name="Melinda" id="3" age="38"/>
<user name="Yondu" id="4" age="55"/>
</users>

並且我嘗試使用以下python代碼來做到這一點:

class add_user:
        root_new  = ET.Element("users") 
    root_new.append((ET.fromstring('<user name="Yondu" id="4" age="55"/>')))
    tree = ET.ElementTree(root_new)
    tree.write(sys.stdout)
    for c in root_new:
        print(root_new)

但它不起作用。

關於我該怎么做的任何想法?

  1. 通過etree.fromstring()解析輸入的XML文件/內容
  2. 現在您獲得了根元素的對象。
  3. 然后使用etree.Element()方法創建“新用戶”元素。
  4. 因為我們的根元素是users即通過append方法將新元素追加到root元素。

演示

>>> from lxml import etree

>>> input_data = """<?xml version="1.0"?>
... <users>
... <user name="Rocky" id="1" age="38"/>
... <user name="Steve" id="2" age="50"/>
... <user name="Melinda" id="3" age="38"/>
... </users>"""

>>> root = etree.fromstring(input_data)

>>> new_user = etree.Element("user", {"name":"Yondu", "id":"4", "age": "55"})

>>> root.tag
'users'

>>> root.append(new_user)

>>> print etree.tostring(root, method="xml", pretty_print=True)
<users>
<user name="Rocky" id="1" age="38"/>
<user name="Steve" id="2" age="50"/>
<user name="Melinda" id="3" age="38"/>
<user age="55" name="Yondu" id="4"/></users>

>>> 

注意:做必要的異常處理。

lxml文檔鏈接

暫無
暫無

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

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