Python操作XML文件总结


在这里插入图片描述

活动地址:CSDN21天学习挑战赛

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。

学习日记(3)

目录

学习日记(3)

一、XML概述

1、XML概念

2、XML的特点

3、XML的特点

4、XML文件格式

5、XML语法规则

6、XML命名规则

二、Python解析XML文件

1、ElementTree 方式

2、DOM

三、Python写入XML文件

四、向XML中插入新的子元素

五、杂事


一、XML概述


1、XML概念

    XML(Extensible Markup Language):即可扩展标记语言。XML是互联网数据传输的重要工具,它可以跨越互联网任何的平台,不受编程语言和的限制,可以说它是一个拥 有互联网最高级别通行证的数据携带者。XML是当前处理结构化文档信息中相当给力的技术,XML有 助于在服务器之间穿梭结构化数据,这使得开发人员更加得心应手的控制数据的存储和传输。

    XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是-种允许用户对自己的标记语言进行定义的源语言。XML是标准通用标记语言(SGML) 的子集,非常适合Web传输。XML提供统-的方法来描述和交换独立于应用程序或供应商的结构化数据。

2、XML的特点

1、XML是可扩展标记语言。

2、XML设计用来传输和存储数据。

3、XML是一种允许用户对自己的标记语言进行定义的源语言。

4、XML与编程语言的开发平台都无关。

5、XML可以实现不同系统之间的数据交互。

3、XML的特点

1、配置应用程序和网站;

2、数据交互;

3、Ajax基石。

4、XML文件格式

XML文件可以表示为称为: XML 树。这个XML树从根元素(父元素)开始。这个根元素进一步分支到子元素。 XML文件的每个元素都是XML树中的一个节点。那些没有子节点的元素是叶节点。

XML是一种将数据存储在标记之间的标记语言,是人类可读和可扩展的。我们可以自由地定义自己的标记。XML文件可以有声明,也可以没有声明。如果它有一个声明,那么它必须是XML文件的第一。如:

<?xml version="1.0” encoding=' "UTF-8" standalone=" no”?>

   这个声明有三部分:版本、编码和独立性。版本说明正在使用的XML标准的版本; Encoding 表示在此文件中使用的字符编码类型; Standalone 告诉解析器是否要外部信息来解释XML文件的内容。

5、XML语法规则

1、所有的元素都必须有开始标签和结束标签,省略结束标签是非法的。

2、大小写敏感,大小写不一致时表示两个不同的标签。

3、xml文档必须有根元素。

4、XML必须正确嵌套 ,父元素必须完全包住子元素。

5、XML属性值必须加引号,元素的属性值都是一个键值对形式。

在 HTML 中,某些元素不必有一个关闭标签;在 XML 中,省略关闭标签是非法的。所有元素都必须有关闭标签。在 XML 中,XML 的属性值必须加引号。

<note date="12/11/2007">
<to>Tove</to>
<from>Jani</from>
</note>

例: 

<b><i>This text is bold and italic</i></b> 正确
<b><i>This text is bold and italic</b></i> 错误

6、XML命名规则

1、名称可以包含字母、数字以及其他字符。

2、名称不能以数字或标点符号开头。

3、名称不能以字母xml或XML开始。

4、名称不能包含空格,但可以使用任何名称,没有保留字。

5、名称应具有描述性,简短、简单,可以同时使用下划线。

6、避免使用“-”、“.”、“:”等字符。

二、Python解析XML文件

1、ElementTree 方式

ElementTree模块提供了一个轻量级、Pythonic的API,同时还有一个高效的C语言实现,即xml.etree.cElementTree。与DOM相比,ET的速度更快,API使用更直接、方便。与SAX相比,ET.iterparse函数同样提供了按需解析的功能,不会一次性在内存中读入整个文档。ET的性能与SAX模块大致相仿,但是它的API更加高层次,用户使用起来更加便捷。

Element对象方法:

 属性方法

2、DOM


DOM(文档对象模型)定义了访问和操作文档的标准方法,把 XML 文档作为树结构来查看。

所有元素可以通过 DOM 树来访问。可以修改或删除它们的内容,并创建新的元素。元素,它们的文本,以及它们的属性,都被认为是节点。

三、Python写入XML文件

doc.writexml():生成xml文档,将创建的存在于内存中的xml文档写入本地硬盘中,这时才能看到新建的xml文档

语法格式writexml(file,indent=’’,addindent=’’,newl=’’,endocing=None)

参数说明

  • file:要保存为的文件对象名
  • indent:根节点的缩进方式
  • allindent:子节点的缩进方式
  • newl:针对新行,指明换行方式
  • encoding:保存文件的编码方式

四、向XML中插入新的子元素

import xml.dom.minidomfrom xml.dom.minidom import parse# 对book.xml新增一个子元素english,并删除math元素xml_file = './书籍.xml'# 拿到根节点domTree = parse(xml_file)rootNode = domTree.documentElement# rootNode.removeChild(rootNode.getElementsByTagName('book')[0])# print(rootNode.toxml())# 在内存中创建一个空的文档doc = xml.dom.minidom.Document()book = doc.createElement('book')book.setAttribute('语言', 'c++')# 子元素中嵌套子元素,并添加文本节点name = doc.createElement('name')name.appendChild(doc.createTextNode('c++基础'))price = doc.createElement('价格')price.appendChild(doc.createTextNode('200元'))number = doc.createElement('number')number.appendChild(doc.createTextNode('剩余300本'))#  将子元素添加到boot节点中book.appendChild(name)book.appendChild(price)book.appendChild(number)math_book = rootNode.getElementsByTagName('book')[0]# insertBefore方法  父节点.insertBefore(新节点,父节点中的子节点)rootNode.insertBefore(book, math_book)# appendChild将新产生的子元素在最后插入rootNode.appendChild(book)print(rootNode.toxml())with open(xml_file, 'w', encoding='utf-8') as fh:
    domTree.writexml(fh, indent='', addindent='\t', newl='', encoding='utf-8')

五、杂事

可以pip install xmltodict安装第三方库,利用库进行XML文件和JSON文件互转


 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醉蕤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值