105.格局化文件xml与json
标签:
布局化文件存储目的是为了解决文件在差此外系统中的交换
两种协议xml,json
xml偏重于描述数据自己,即数据的布局和语义
html偏重于如何显示web页面的数据
网页三剑客
html 网页中有什么数据
css 网页美化
javascript 页面成果
xml参考资料
https://www.runoob.com/xml/xml-syntax.html
https://blog.csdn.net/seetheworld518/article/details/49535285
json参考资料
https://www.runoob.com/json/json-tutorial.html
https://www.w3school.com.cn/json/index.asp
xml可扩展的符号语言(eXtensible Markup Language),是w3c组织指定的标准,比html更简单一些
符号语言:语言中使用<>括取来的文本字符串作为符号
可扩展:用户可以本身界说需要的符号,html不行
xml文档的组成措置惩罚惩罚指令(可以认为一个文件内只有一个措置惩罚惩罚指令)
最多只有一行
必需在第一行
与xml自己措置惩罚惩罚相关的一些生命和指令
以?xml开头
一般用于声明xml的版本和给与的编码
version属性是必需的
encoding属性用来指出xml解释器使用的编码
根元素(一个文件内只有一个根元素)
-在xml文件中,可以把他看做是一个树形布局
有切只能有一个
子元素
-根元素下所有的元素,都是子元素
属性
供给有关元素的特别信息
凡是供给不属于数据构成部分的信息
值必需使用引号,单引号双引号都行,内容中有单引号,就使用双引号,,反之亦然
内容
注释
其说明摆布的信息
注释不能在标签内
注释内不成以有一个以上的短横线
保存字符
<?xml version="1.0" encoding="utf-8"?> <note> <xsq> <name>显示器</name> <date>2018/01/01</date> </xsq> <sb> <name>鼠标</name> <date>2019/01/01</date> </sb> <jp> <name>键盘</name> <date>2020/01/01</date> </jp> </note> xml访谒 读取分为两个主要技术 SAX 和 DOM
SAX
基于事件驱动
用SAX解析文档涉及到解析器和事件措置惩罚惩罚器
特点:
快
流式读取
DOM
是W3C规定的XML编程接口,保举
读取一个xml文件,以属性布局生存到缓存中
用途
定位浏览xml任何一个节点的信息
添加删除相应的内容
minidom和etree
minidom
minidom.parse(filename):加载读取的xml文件,也可以是xml代码
.documentElement:获取xml文档东西,一个xml文件只有一个对应的文档东西
.getAttribute(attr_name):获取xml节点属性 attr_name属性名
.getElementByTagName(tage_name):得到一个节点东西的调集 tage_name节点名
.childNodes:得到所有子节点的列表
.childNodes[index].nodeValue:获得单个节点的值
.firstNode:获得第一个节点,等价于.childNodes[0]
.attributes[tage_name]
import xml.dom.minidom from xml.dom.minidom import parse #读取文件形成树文件 DOMtree = xml.dom.minidom.parse("./t.xml") #通过树文件,实例根节点 doc = DOMtree.documentElement print(list(doc.childNodes)) #遍历根节点的子节点 for i in doc.childNodes: #便当子节点的子节点 for n in i.childNodes: if n.nodeName == "name": print(n.childNodes[0].data) if n.nodeName == "date": print(n.childNodes[0].data)etree
.getiterator 得到相应可迭代的node调集
.lite 同上
.find(node_name) 查找置顶名字的节点。返回一个node
.findall(node_name) 返回多个node_name的节点
.tag 节点名
.text 节点文本
.attrib node属性的字典类型内容
import xml.etree.ElementTree root = xml.etree.ElementTree.parse("./t.xml") #操作getiterator访谒 nodes = root.getiterator() for node in nodes: print("{0}--{1}".format(node.tag, node.text)) print("-" * 30) #操作find和findall要领访谒 jpm = root.find("jp") print("{0}--{1}".format(jpm.tag, jpm.text)) print("-" * 30) l = root.findall("jp") for i in l: print("{0}--{1}".format(i.tag, i.text)) for n in i.iter(): if n.tag == "name": f "other" in n.attrib.keys(): print(n.attrib["other"]) 创建xml文件变动方法
ele.set:变动属性
ele.append:添加子元素
ele.remove:删除元素
第一种方法
import xml.etree.ElementTree as ET note = ET.Element("note") name = ET.Element("name", {"a":"A"}) date = ET.Element("date", {"b":"B"}) note.append(name) note.append(date) t = ET.ElementTree(note) t.write('family_tree.xml', encoding='utf-8', short_empty_elements=False, xml_declaration=True)第二种方法
import xml.etree.ElementTree as ET note = ET.Element("note") name = note.makeelement("name", {"a":"A"}) date = note.makeelement("date", {"b":"B"}) note.append(name) note.append(date) t = ET.ElementTree(note) t.write('family_tree.xml', encoding='utf-8', short_empty_elements=False, xml_declaration=True)温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/29994.html