python解析xml文件内容(Python读写XML文档)
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规范,程序编码才能更加规范效率。
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com