2017-05-30 56 views
0

XML元素我有XML命名user_data.xml包含:追加使用Python

<?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> 

,我已經試過使用這個蟒蛇代碼:

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) 

但它不工作。

任何想法,我該怎麼做?

+0

ü[R使用'xml.etree.ElementTree'庫? –

回答

0
  1. 解析XML輸入文件/由etree.fromstring()
  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 Documentation Link