龙空技术网

Python读写XML文档

运维的榕树 241

前言:

当前大家对“pythonetreexml”都比较珍视,朋友们都需要分析一些“pythonetreexml”的相关内容。那么小编也在网摘上汇集了一些关于“pythonetreexml””的相关内容,希望各位老铁们能喜欢,你们快快来学习一下吧!

概要:了解XML,熟悉python的读取操作,以及修改、删除操作。一、概述

XML(eXtensible Markup Language),即可扩展标记语言,可以任意定义需要的标签,因为它扩展的灵活性,被广泛应用于各类数据的传输和存储。

Python对XML提供了良好的模块支持,在各类模块处理方式中,ElementTree模块因为他的简单易用性得到了广泛应用。

二、关于XML实例说明

图2-1

1、XML文件采用一种树形表示,由一个根节点、子节点组成,每个节点都可以拥有“属性(attrib)”、“内容(text)”、“标签(tag)”三部分内容。

2、XML必须遵循的规范性:

· XML 文档必须有一个根元素

· XML 标签区分大小写

· XML 元素嵌套必须正确

· XML 文档必须有开始标签、关闭标签配对

· XML 属性必须加引号

3、如下“2019-students.xml”文档,作为后续python处理的基础:

<class name="123class" grade="2019">

<student id="01">

<name>xiaoli</name>

<sex>male</sex>

<age>15</age>

<result>

<math>80</math>

<english>86</english>

<Chinese>90</Chinese>

</result>

</student>

<student id="02">

<name>xiaohuang</name>

<sex>male</sex>

<age>16</age>

<result>

<math>81</math>

<english>83</english>

<Chinese>76</Chinese>

</result>

</student>

<student id="03">

<name>xiaozhang</name>

<sex>male</sex>

<age>15</age>

<result>

<math>85</math>

<english>84</english>

<Chinese>80</Chinese>

<physics>90</physics>

</result>

</student>

</class>

关于节点的“属性(attrib)”、“内容(text)”、“标签(tag)”具体指什么,可以通过python的输出直观的认识下。

三、python读写xml文档

1、新建myxml工程

2、新建python文件xml_test.py文件,实现编码

#模块导入

import xml.etree.ElementTree as ET

######################################

#子函数编写

#读操作

def read_xml(root):

# 获取二级节点信息

students = root.findall("student")

for student in students:

name = student.find("name")

print("\n")

print("name节点的名称为:%s, 属性为:%s, 文本内容:%s" % (name.tag, name.attrib, name.text))

# result有“元素内容”,没有“文本内容”,所以文本内容为空

result = student.find("result")

# 遍历所有子节点

for course in result:

print("result子节点的名称为:%s, 文本内容:%s" % (course.tag, course.text))

return

#修改操作

def change_xml(root):

students = root.findall("student")

for student in students:

# 1、删除不合规元素physics

result = student.find("result")

for course in result:

if course.tag == "physics":

result.remove(course)

# 2、修改name元素为对应中文

name = student.find("name")

if name.text == 'xiaoli':

name.text = '小李'

elif name.text == 'xiaohuang':

name.text = '小黄'

elif name.text == 'xiaozhang':

name.text = '小张'

if __name__ == '__main__':

#原始文件

filename = r'E:\debug\2019-students.xml'

tree = ET.parse(filename)

#获得根节点

root = tree.getroot()

print("根节点的名称为:%s, 属性为:%s" % (root.tag,root.attrib))

#读操作

read_xml(root)

# 修改操作

change_xml(root)

#保存新文件

filename_new = r'E:\debug\2019-students_new.xml'

tree.write(filename_new, "UTF-8")

4、测试验证

4.1、读取部分运行结果

4.2、修改部分运行结果

5、总结

熟悉XML规范,程序编码才能更加规范效率。

标签: #pythonetreexml