学习数据格式XML与SJON

数据传输语言 XML 与 Json

XML

为什么要学习xml?

不同软件之间的沟通语言,具有平台无关性,是一门独立的标记语言,

xml的作用:

​ 1.网络数据传输

​ 2.数据存储

​ 3.配置文件

xml语法

1,xml文档声明

<?xml version="1.0" encoding="UTF-8"?>

2,标记的命名规范

​ 名称不能以数字或者标点符号开始

​ 名字不能以字符’xml’或’XML’开始

​ 名称不能包含空格,不能包含冒号(😃

​ 名称区别大小写

3,一个文档中,必须且允许有一个根标记

4,标记允许嵌套,不允许交叉

5,标记名称允许重复

6,标记中可以有属性,在标记开始时描述属性,由属性名和属性这组成,由等于号连接键值对,在一个标记中属性名不能重复,

7,注释:

​ 注释不能在文档声明前面使用

8,某些符号如 “<”,"&"在xml元素中是非法的,为了避免错误,可以将使用这些符号的内容由CDATA包裹

<![[CDATA 可能引起符号冲突的代码<a></a>]]>
解析xml方式

sax解析与dom解析

sax解析:逐行解析

逐行读取解析xml,每解析到一个内容时,会告知程序员,可以编写相应的程序处理.

优点:解析立即开始,不用等待多有数据被处理

​ 逐行加载,节约内存

​ 有时候不必解析整个文档,只需要在某个条件下停止解析;

缺点

​ 单向解析,

​ 无法得知元素的层次,只能程序员自己维护层次关系

​ 只读解析,不能修改xml文档内容

dom解析:全文阅读,然后再解析

​ 优点:文档在内存中加载,可以修改xml的数据

​ 访问是双向的,可以在任何时候在树中双向解析数据;

​ 缺点:

​ 文档全部加载到内存,消耗资源大(可以忽略不计)

JDOM解析,

​ 是java第一个特定文档解析,能简化对xml的操作

​ 优点: 大量使用java 集合类,方便开发

​ 缺点: 由于没有基于接口开发,没有较好的灵活性;

​ 性能不是很优异

DOM4J解析

​ 他是jdom的一个分支,具有性能优异,功能强大,易用等特点.

支持xpath,xml schema

DOM4J语法:

引入jar包:

​ dom4j.jar

​ xstream.jar

解析文档

1.创建xml的文件输入流

2.创建一个读取xml的工具对象: SAXReader

3使用SAXReader读取文档流对象,并得到Document对象

4.通Document对象,可以获取xml中的各个元素

通过网络资源解析xml

1,根据网站创建URL

URL url = new URL(" ");

2,打开连接

URLConnection conn = url.openConnection();

3,获取输入流

InputStream is = conn.getInputStream();

Document 文档对象 Element 元素对象

Document 指加载到内存的整个XML文档.

Element 是指XML文档的单个节点

方法名作用
Element getRootElement();根据document对象获取根元素对象
Element addElement(“根节点名称”);添加根节点
String getName();获取节点名称
String getText();获取节点中的内容
String setText(String str);设置节点内容
Element element(String 子节点名称);根据子节点名称获取匹配的第一个子节点
List elements()获取所有的子节点对象
String attributeValue(String 属性名称);获取节点的属性值
String elementText(String 子节点名称);获取子节点的名称
Element addElement(String 子节点名称);添加子节点
void addAttribute(String name,String value);给元素添加属性
String attributeValue(Stirng key)根据元素中的属性名称获取属性值
XPATH解析XML

路径表达式:

  1. / : 从根节点开始查找

  2. // : 从发起查找的节点位置 查找后代节点

  3. . : 查找当前节点

  4. : 查找父节点

  5. @ : 选择属性. *

属性使用方式:

[@属性名=‘值’]

[@属性名>‘值’]

[@属性名<‘值’]

[@属性名!=‘值’]

例: //book[@id=‘1’]//name

查找节点属性id =1的book中的name节点

使用步骤

方法1.

根据路径表达式, 查找匹配的单个节点

Element e = selectSingleNode(“路径表达式”);

方法2.

List es = selectNodes(“路径表达式”)

java生成xml
手动生成

1,通过文档帮助器(DocumentHelper),创建一个文档对象

2,给文档添加一个子节点(根节点)

3,通过根节点,丰富子字节点

4,创建文件输出流

5将文件输出流转换为xwl输出流

6 写出文档对象

7依次关闭资源

XStream 自动生成

1,创建Xstream对象

2,修改类生成的节点名称,默认为类的全类名

alias(“节点名称”,类名.class)
3, 传入对象生产xml字符串

String toXML(Object o);

JSON

js对象简谱,是一种轻量级的数据交换格式

json格式

对象, 由一个大括号表示.:

{

​ game:{

​ name:“王者荣耀”;

​ company:“腾讯”

​ }

}

括号中 描述对象的属性 . 通过键值对来描述对象的属性

键与值之间使用冒号连接, 多个键值对之间使用逗号分隔.

键值对的键 应使用引号引住

数组由中括号表示:

[元素1,元素2]

GSON 谷歌json转换java工具

java->json

1.创建GSON对象

Gson gson = new Gson();

2,将对象转化为json:

String json = gson.toJson(Object o);

json->java

Object gson.fromJson(json, Object.class);

json中数组部分会转化为ArrayList类型

fastjson 阿里巴巴解析json

java->json

String JSON.toJSONString(Object obj)

json->java

Object JSON.parseObject(JSON字符串, 类型.class);

数组类型:

List<类型> list=JSON.parseArray(JSON字符串,类型.class);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值