XML/JSON介绍

一、XML/JSON的作用
为了解决不同语言之间信息交流方式不同的问题,引入了XML和JSON两种语言,这两种语言的作用是使不同语言能够通过XML或JSON文件进行数据的交流,达到解决语言之间交流困难的问题。
二、XML
1、XML简介
xml的特点有两点,其一,它具有平台无关系,是一门独立的标记语言;其二,它具有自我描述性。
xml文件是保存xml数据的一种方式,且xml数据不仅可以以文件形式存在,还能在内存中构建xml数据,需要注意的是,不要将xml语言理解成xml文件。
2、XML语法格式
规范的语法格式如下:
在这里插入图片描述

其中,第一行为XML文档的声明,用于声明文档的相关信息,例如版本和编码方式。
在声明过后可以进行标记的创建,标记也可称为元素/标签/节点,每个XML文档中必须有一个根节点,且有且只有一个根节点,也就是图中的Students节点,创建节点的方式是以<标记名称>为开始标记,以</标记名称>结尾,标记名称可以由用户按照需求自己设置,标记规范与Java的规范差不多。在根节点中可以添加多个子节点,添加方式与根节点相同,但是必须在跟节点内部创建,标记可以嵌套,但是不允许交叉,例如以下反例:
在这里插入图片描述

标记层级的称呼包括:子标记,父标记,兄弟标记,后代标记,祖先标记,例如图中的Students标记是Student标记的父标记,Student标记是name和age标记的父标记,是students标记的子标记以及后代标记,name和age标记之间互为兄弟标记,Students标记是name和age标记的祖先标记。
标记不仅仅可以有子标记,还能包含多个属性,属性写在开始标记内,属性之间用空格隔开,例如:
在这里插入图片描述

Id1和id2称为student的属性,每一个属性都是一个键值对,属性名是不允许重名的,但是标记名称允许重复。
Xml文档也是可以注释的,注释的内容格式如下:
在这里插入图片描述

为了避免出现标签内容出现标签的<>或其他字符时出现解析错误的情况,出现这些字符的内容需要用<![CDATA[“包含字符的内容”]]>这种格式进行包装
3、Java解析XML的方式
(1)SAX解析
SAX解析器的解析方式是事件驱动机制,每当读取到特定内容则执行不同的事件,例如当解析到标签<>时,则会进行相应的处理。
SAX解析的优点在于,一、分析能够立即开始,而不是等待所有数据接收完才能处理;二、逐行加载,节省内存,有助于解析占用空间大的文档;三、有时不需要解析整个文档就能读取到需要的信息,节省时间。缺点在于:一、单向解析,只能从开头解析到结尾,不能从结尾解析到开头;二、无法判断事件发生时所在的层次,也就是说它只能维护节点的父/子关系;三、这种方式只允许读取,无法修改文档内容。
(2)DOM解析
是用与平台和语言无关的方式表示XML文档的官方w3C标准,分析该结构通常需要将整个文档加载到内存中建立文档树模型,程序员可以通过操作文档树来完成数据的获取、修改和删除等。
这种解析方式的优点是:一、因为文档在内存中加载,所以允许对数据和结构进行修改;二、访问是双向的,可以在任何时候在树中双向解析数据。缺点是:文档需要全部加载到内存中,消耗资源大。
(3)JDOM解析
这种解析方式是成为Java特定文档模型,它简化了与XML的交互并且实现速度比DOM更快。优点是:一、使用了具体的类而不是接口(DOM使用的是接口),简化了DOM的API;二、大量使用了Java集合类,使Java开发人员更加方便。缺点是:灵活性不够好,且性能没那么优异。
(4)DOM4J解析
DOM4J是JDOM的一种智能分支,它合并了许多超出基本XML文档表示的功能,包括集成的XPath支持、XML、Schema支持以及用于大文档或流化文档的基于事件处理的事件,DOM4J是一种非常优秀的Java XML API,性能优异、功能强大,且极易使用,同时它也是一个开源的软件,是比较常用的软件。
通过DOM4J解析XML的方式如下(使用前需要将dom4j.jar文件导入):
在这里插入图片描述

如果需要接收URL发送的XML数据,则需要创建个URL对象,操作如下(操作前需要导入jaxen-1.1-beta-7.jar包):
在这里插入图片描述

4、XML生成
XML文件的生成方式很简单,只需要先创建好Document文档,然后将文档内容输出到xml文件中即可,详细操作如下:
在这里插入图片描述

另外,为了方便地将某个对象写入XML文件中,可以通过导入XStream-1.2.1.jar包来操作,操作方式如下:
在这里插入图片描述

三、JSON
JSON(JavaScript Object Notation),是一种轻量级的数据交换格式,它的格式很简单,比如:
在这里插入图片描述

其中大括号{}包住的内容相当于一个对象,里面的name、age和parent相当于属性,分别为字符串、数字、数组,当使用Java进行解析json格式数据时,属性名称需要加上双引号,在一个对象内还可以再创建多个对象,在数组中也可以创建对象。JSON最常用的解析方式有两种:Gson和FastJson。
1、Gson
在Java中使用Gson进行解析Json字符串的方式如下(在使用前需要引入Gson的jar包):
在这里插入图片描述

将Json字符串转换成对象:
在这里插入图片描述

2、FastJson
在Java中使用FastJson进行解析Json字符串的方式如下(在使用前需要引入FastJson的jar包):
在这里插入图片描述

将对象转换成Json字符串:
在这里插入图片描述

除了可以将Json字符串转换成对象外,还可以转换成List类型的数组,通过调用JSON.parseArray()函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值