简体   繁体   English

使用Python附加在XML元素上

[英]Append on XML element using Python

I have xml named user_data.xml that contains: 我有一个名为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>

and i want to add new element inside users something like: 我想在用户内部添加新元素,例如:

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

and I've tried to do it using this python code: 并且我尝试使用以下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)

but it's not working . 但它不起作用。

Any idea on how can I do it? 关于我该怎么做的任何想法?

  1. Parse input XML file/content by etree.fromstring() 通过etree.fromstring()解析输入的XML文件/内容
  2. Now you get object of root element. 现在您获得了根元素的对象。
  3. Then use etree.Element() method to create New User element. 然后使用etree.Element()方法创建“新用户”元素。
  4. As our root element is users ie append new element to root element by append method. 因为我们的根元素是users即通过append方法将新元素追加到root元素。

Demo : 演示

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

>>> 

Note: Do necessary Exception handle. 注意:做必要的异常处理。

lxml Documentation Link lxml文档链接

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM