前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【python】XML格式文件读写详解

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

作者头像
20岁爱吃必胜客
发布2023-03-06 14:02:59
6630
发布2023-03-06 14:02:59
举报
文章被收录于专栏:进步集

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

文章目录


🌸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文件案例

代码语言:javascript
复制
# 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文档的所有特征 处理大文件的时候更快

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-03-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • XML介绍
    • 格式
    • XML与AJAX与HTML区别联系
    • 生成XML文件案例
    • 用SAX模块处理XML
    • 用DOM模块处理XML
    相关产品与服务
    对象存储
    对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档