-xml,json
-为了解决不同设备之间信息交换
-参考资料
-
-XML(extensibleMarkupLanguage),可以扩展标记语言
? ? ? -标记语言:语言中使用尖括号括起来的文字字符串标记
? ? ? -可扩展:用户可以自己定义需要的标记
? ? ? -例如:
? ? -是w3c组织制定的一个标准
? ? -XML描述的是数据本身,即数据的结构和语义
? ? -HTML侧重于如何显示web页面中的数据
? ? ? -处理指令(可以认为一个文件内只有一个处理指令)
? ? ? ? ? ? ? -以xml关键字开头,在xml文件中只能出现一次并且必须在头部
? ? ? ? ? ? ? -内容是与xml本身处理起相关的一些声明或者指令,一般用于声明XML的版本和采用的编码
? ? ? ? ? ? ? ? ? ? ? -version属性是必须的
? ? ? ? ? ? ? ? ? ? ? -encoding属性用来支出xml解释器使用的编码
? ? ? -根元素(一个文件内只有一个根元素)
? ? ? ? ? ? ? -在整个xml文件中,可以把它看作一个树形结构
? ? ? ? ? ? ? -只有一个根元素,根元素里的都是他的子元素
? ? ? -子元素
? ? ? -属性
? ? ? -内容:表明标签所存储的信息
? ? ? -注释:起说明解释的作用;注释不能嵌套在标签里;只有在注释的开始和结尾使用双短横线;三短横线只能出现在开头不能在结尾
-保留字符的处理
? ? ? ? -XML中使用的符号可能跟实际符号相冲突,典型的就是左右尖括号
? ? ? ? -使用实体引用(EntityReference)来表示保留字符
? ? ? ? ?-把含有保留字符的部分放在CDATA块内部,CDATA把内部信息视为不需要转义
-常用的需要转移的保留字和对应实体引用
? ? ? ? -&:&
? ? ? ? -<:&It;
? ? ? ? ->:>
? ? ? ? -' :'
? ? ? ? -" :"
? ? ? ? 一共五个,每个实体引用都以&开头并且以分号结尾
-XML标签的命名规则
? ? ? ?-Pascal命名法
? ? ? ?-用单词表示,第一个字母大写
? ? ? ?-大小写严格区分
? ? ? ?-配对的标签必须一直
-命名空间
? ? ? ? -为了防止命名冲突
? ? ? ? -如果归并上述两个内容信息,会产生冲突
-为了避免冲突,需要给可能冲突元素添加命名空间
-xmlns: xml name space 的缩写
-读取?
? ? -XML读取分两个主要技术,SAX,DOM
? ? -SAX(Simple API for XML):
? ? ? ? ? -基于时间驱动的API
? ? ? ? ? -利用SAX解析文档涉及到解析器和事件处理两部分
? ? ? ? ? -特点:快;流式读取
-DOM
? ? ? -是w3c规定的XML编程接口
? ? ? -一个XML文件在缓存中以树形结构保存,读取
-minidom
? ? ? ?-minidom.parse(filename):加载读取的xml文件,filename也可以是xml的代码
? ? ? ?-doc.documentElement:获取xml文档对象,一个xml文件只有一个对于的文档对象
? ? ? ?-node.getAttribute(attr_name):获取xml节点的属性值
? ? ? ?-node.getElementByTagName(tage_name):得到一个节点对象集合
? ? ? ?-node.childNodes:得到所有孩子节点
? ? ? ?-node.childNodes[index].nodeValue:获取单个节点值
? ? ? ?-node.firstNode:得到第一个节点,等价于node.childNodes[0]
? ? ? ?-node.attributes[tage_name]
-
? ? ?
-etree
? ? ? ?-以树形结构来表示xml
? ? ? ?-root.getiterator:得到相应的可迭代的node集合
? ? ? ?-root.iter
? ? ? ?-find(node_name):查找指定node_name的节点,返回一个node
? ? ? ?-root.findall(node_name):返回多个node_name的节点
? ? ? ?-node.tag:node对应的tagename
? ? ? ?-node.text:node的文本值
? ? ? ?-node.attrib:是node的属性的字典类型的内容
? ?
-更改
? ? ? ? -ele.set:修改属性
? ? ? ? -ele.append:添加子元素
? ? ? ? -ele.remove:删除元素
-文件to_edit.xml
? ? ? ?
-生成创建? ?
? ? ? ? -SubElement
? ? ? ? -minidom写入
? ? ? ? -etree创建
-在线工具
-https://www.sojson.com/
-https://www.w3school.com.cn/json/
-https://www.runoob.com/json/json-tutorial.html
?-JSON(JavaScriptObjectNotation)
-轻量级的数据交换格式,基于ECMAScript
-json格式是一个键值对形式的数据集
? ? ? ? -key:字符串
? ? ? ? -value:字符串、数字、列表、json
? ? ? ? -json使用大括号包裹
? ? ? ? -键值对直接用都好隔开
-json和python格式的对应
? ? ? ?-字符串:字符串
? ? ? ?-数字:数字
? ? ? ?-队列:list
? ? ? ?-对象:dict
? ? ? ?-布尔值:布尔值
-python for json
? ? ? ?-json包
? ? ? ?-json和Python对象的转换
? ? ? ? ? ? ? ?-json.dumps():对数据编码,把python格式表示成json格式
? ? ? ? ? ? ? ?-json.loads():对数据解码,把json格式转换成python格式
-python读取json文件
? ? ? ? -json.dump():把内容写入文件
? ? ? ? -json.load():把json文件内容读入python
?