如何解决lxml如何将新元素及其值附加到节点?
<?xml version="1.0" encoding="UTF-8"?>
- <note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
现在我想在注释下添加一个 id 元素及其值,输出应该如下所示:
<?xml version="1.0" encoding="UTF-8"?>
- <note>
<id>3</id>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
有朋友可以帮忙吗?
解决方法
如果您有没有 -
的 xml,那么它将是有效的 xml,并且可以与 lxml
一起使用
您可以使用 Element()
import lxml.etree as ET
item = ET.Element('id')
item.text = '3'
item.tail = '\n ' # to format indentation
然后你可以使用 element.insert(position,new_element)
tree = ET.fromstring(text.encode('utf-8'))
note = tree
#note = tree.find('note')
note.insert(0,item)
最少的工作代码(没有 -
)
text = '''<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
'''
import lxml.etree as ET
tree = ET.fromstring(text.encode('utf-8'))
note = tree
#note = tree.find('note')
item = ET.Element('id')
item.text = '3'
item.tail = '\n '
note.insert(0,item)
text = ET.tostring(tree,xml_declaration=True,encoding='UTF-8').decode()
print(text)
结果:
<?xml version='1.0' encoding='UTF-8'?>
<note>
<id>3</id>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。