码迷,mamicode.com
首页 > 编程语言 > 详细

python XML ElementTree的增删改查

时间:2019-11-15 20:34:04      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:str   自动   port   属性   读取   import   encoding   rem   strip()   

import xml.etree.ElementTree as ET

"""
    ElementTree.write()       将构建的XML文档写入(更新)文件。
    Element.set(key, value)   添加和修改属性
    Element.text = ‘‘         直接改变字段内容
    Element.remove(Element)   删除Element节点
    Element.append(Element)   为当前的Elment对象添加子对象
    ET.SubElement(Element,tag)创建子节点 
"""

#  增加自动缩进换行
def indent(elem, level=0):
    i = "\n" + level*"  "
    if len(elem):
        if not elem.text or not elem.text.strip():
            elem.text = i + "  "
        if not elem.tail or not elem.tail.strip():
            elem.tail = i
        for elem in elem:
            indent(elem, level+1)
        if not elem.tail or not elem.tail.strip():
            elem.tail = i
    else:
        if level and (not elem.tail or not elem.tail.strip()):
            elem.tail = i
            

#------------新增XML----------

#创建根节点
a = ET.Element("student")
#创建子节点,并添加属性
b = ET.SubElement(a,"name")
b.attrib = {"NO.":"001"}
#添加数据
b.text = "张三"
#创建elementtree对象,写文件
indent(a,0)
tree = ET.ElementTree(a)
tree.write("writeXml.xml",encoding="utf-8")

#----------编辑XML--------
# 读取待修改文件
updateTree = ET.parse("writeXml.xml")
root = updateTree.getroot()

# --新增--

# 创建新节点并添加为root的子节点
newnode = ET.Element("name")
newnode.attrib = {"NO.":"003"}
newnode.text = "张三水"
root.append(newnode)

#---修改---

sub1 = root.findall("name")[2]
# --修改节点的属性
sub1.set("NO.","100")
# --修改节点内文本
sub1.text="陈真"

#----删除---

#--删除标签内文本
sub1.text = ""
#--删除标签的属性
del sub1.attrib["NO."]
#--删除一个节点
root.remove(sub1)


# 写回原文件
indent(root,0)
updateTree.write("writeXml.xml",encoding="utf-8", xml_declaration=True)

XML操作封装

python XML ElementTree的增删改查

标签:str   自动   port   属性   读取   import   encoding   rem   strip()   

原文地址:https://www.cnblogs.com/steven223-z/p/11869109.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!