2017-05-30 53 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