【python】XML格式文件读写详解

简介: 【python】XML格式文件读写详解

注:最后有面试挑战,看看自己掌握了吗


🌸I could be bounded in a nutshell and count myself a king of infinite space.

特别鸣谢:木芯工作室 、Ivan from Russia


XML介绍

xmlextensible markup language可扩展标记语言

是另外一种带格式标准的标记语言

可以用来 以文件形式共享处理数据

它定义了一组规则,用以以人类可读和机器可读的格式对文档进行编码

他非常适合万维网传输

提供统一方法来表述和交换独立于应用程序或供应商的结构化数据

是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具

XML是标准通用标记语言 可扩展性良好,内容与形式分离,遵循严格的语法要求,保值性良好等优点,

在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。

它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。早在1998年,W3C就发布了XML1.0规范,使用它来简化Internet的文档信息传输。

格式

可扩展标记语言与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,可扩展标记语言仅仅是存储数据。事实上它与其他数据表现形式最大的不同是:可扩展标记语言极其简单,这是一个看上去有点琐细的优点,但正是这点使它与众不同。

XML的简单易于在任何应用程序中读/写数据,这使XML很快成为数据交换语言(此类语言主要包括XML,JSON等,常用于接口调用,配置文件,数据存储等场景 ),虽然不同的应用软件也支持其他的数据交换格式,但不久之后它们都将支持XML,那就意味着程序可以更容易的与Windows、Mac OS、Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析它,并以XML格式输出结果

XML与AJAX与HTML区别联系

1、AJAX 全称Asynchronous Javascript And XML 就是异步js和XML。通过AJAX可以在浏览器中向服务器发送异步请求,最大的优势:无刷新获取数据

2、XML (Extensible Maekup Language)可扩展标记语言 被设计用来传输和存储数据,和HTML类似,不同的是HTML都是预定义标签,而XML没有预定义标签。 它们两者之间没有任何的关系。

HTML被设计用来描述网页上的内容,是网页内容的载体

XML被设计用来传输和存储数据,是数据的载体

Ajax接收返回的XML文档(script)

生成XML文件案例

# coding=gbk
import sys
class BuildNewXML():
    def __init__(self,filename=None):
        self.filename = filename
        self.__get_f = None     #自定义隐含属性---在类的内部使用
    def openfile(self):
        if self.filename ==None:
            print("没提供文件名字")
            return False
        try:
            self.__get_f = open(self.filename,'a',encoding='utf-8')
        except:
            print('没打开')
            return False
    def writeXML(self,n,element):
        try:
            if n==0:
                self.__get_f.write(element+'\n')# 根元素写入
            else:
                self.__get_f.write(' '*n+element+'\n')# 子元素写入
        except:
            print("xie%scuole%s"%(self.filename,element))
    def closeXML(self):
        if self.__get_f:
            self.__get_f.close()
#==================
filename = "storehouse.xml"
flag = False
content = {1:[0,'<storehouse>'],
           2:[4,'<goods category="fish">'],
           3:[8,'<title>淡水鱼</title>'],
           4:[8,'<name>鲫鱼</name>'],
           5: [4, '<amount>18</amount>'],
           6: [8, '<price>8</price>'],
           7: [4, '</goods>'],
           8: [4, '<goods category="fruit">'],
           9: [8, '<title>温带水果</title>'],
           10: [8, '<name>猕猴桃</name>'],
           11: [8, '<amount>10</amount>'],
           12: [8, '<price>10</price>'],
           13: [4, '</goods>'],
           14:[0,'</storehouse>'],
           }
build_xml=BuildNewXML(filename)
try:
    build_xml.openfile()
    #print(content.items())
    for get_item in content.items():
        #print(get_item)
        #print(get_item[0])
        #print(get_item[1])
        #print(get_item[1][0],get_item[1][1]+'\n')
        build_xml.writeXML(get_item[1][0],get_item[1][1])# 写入xml文件
        flag = True
except:
    print("!!!chucuo")
    sys.exit()
finally:
    if flag:
        build_xml.closeXML()
        print('xie%swancheng'%(filename))

用SAX模块处理XML

sax=simple API for XML --------XML的简单处理API

通过在解析XML过程中触发一个个的事件 并且调用用户定义的回调函数来处理XML文件

当文件很大的时候非常方便,从磁盘读取数据的时候只读取需要部分的内容

避免把整个文件内容从磁盘读入内存

用DOM模块处理XML

dom —document object model -------文件对象模型

整个文件被读入内存并分层(基于树)的形式存储,以表示xml文档的所有特征

处理大文件的时候更快

相关文章
|
12天前
|
XML Java 数据格式
使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式
本文介绍了在使用Spring框架时,如何通过创建`applicationContext.xml`配置文件来管理对象。首先,在resources目录下新建XML配置文件,并通过IDEA自动生成部分配置。为完善配置,特别是添加AOP支持,可以通过IDEA的Live Templates功能自定义XML模板。具体步骤包括:连续按两次Shift搜索Live Templates,配置模板内容,输入特定前缀(如spring)并按Tab键即可快速生成完整的Spring配置文件。这样可以大大提高开发效率,减少重复工作。
使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式
|
20天前
|
计算机视觉 Python
如何使用Python将TS文件转换为MP4
本文介绍了如何使用Python和FFmpeg将TS文件转换为MP4文件。首先需要安装Python和FFmpeg,然后通过`subprocess`模块调用FFmpeg命令,实现文件格式的转换。代码示例展示了具体的操作步骤,包括检查文件存在性、构建FFmpeg命令和执行转换过程。
37 7
|
3月前
|
自然语言处理 数据处理 Python
python操作和解析ppt文件 | python小知识
本文将带你从零开始,了解PPT解析的工具、工作原理以及常用的基本操作,并提供具体的代码示例和必要的说明【10月更文挑战第4天】
545 60
|
1月前
|
Python
Python格式
Python格式
26 5
|
2月前
|
XML JSON API
如何使用Python将字典转换为XML
本文介绍了如何使用Python中的`xml.etree.ElementTree`库将字典数据结构转换为XML格式。通过定义递归函数处理字典到XML元素的转换,生成符合标准的XML文档,适用于与旧系统交互或需支持复杂文档结构的场景。示例代码展示了将一个简单字典转换为XML的具体实现过程。
20 1
|
2月前
|
XML Android开发 数据格式
Eclipse 创建 XML 文件
Eclipse 创建 XML 文件
31 2
|
2月前
|
Java Maven
maven项目的pom.xml文件常用标签使用介绍
第四届人文,智慧教育与服务管理国际学术会议(HWESM 2025) 2025 4th International Conference on Humanities, Wisdom Education and Service Management
179 8
|
3月前
|
安全 Linux 数据安全/隐私保护
python知识点100篇系列(15)-加密python源代码为pyd文件
【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
python知识点100篇系列(15)-加密python源代码为pyd文件
|
2月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
2月前
|
开发者 Python
Python中__init__.py文件的作用
`__init__.py`文件在Python包管理中扮演着重要角色,通过标识目录为包、初始化包、控制导入行为、支持递归包结构以及定义包的命名空间,`__init__.py`文件为组织和管理Python代码提供了强大支持。理解并正确使用 `__init__.py`文件,可以帮助开发者更好地组织代码,提高代码的可维护性和可读性。
85 2