XML与JSON学习笔记大总结

XML与JSON学习笔记大总结,第1张


前言

学完XML与JSON,博主迫不及待与大家总结一下自己整理的一篇关于XML&JSON的学习笔记


一、XML简介 1.特性

(1)xml具有平台无关性, 是一门独立的标记语言

(2)xml具有自我描述性

2.XML的作用

(1)网络数据传输

(2)数据存储

(3)配置文件

3.XML 和 HTML 类似,也是一种标记语言。那XML和HTML有什么区别呢

HTML 被设计用来描述网页上的内容,是网页内容的载体
XML 被设计用来传输和存储数据,是数据的载体

4.XML的缺点

XML 格式臃肿,和数据无关的代码多,体积大,传输效率低
在 Javascript 中解析 XML 比较麻烦

二、XML的语法格式 1.XML文档声明
2.XML文档由一个个的标记组成

开始标记: <标记名称>

结束标记:

3.标记名称:必须遵循以下命名规则:

(1)名称可以含字母、数字以及其他的字符

(2)名称不能以数字或者标点符号开始

(3)名称不能以字符 “xml”(或者 XML、Xml)开始

(4)名称不能包含空格,不能包含冒号 ‘:’

(5)名称区分大小写

4.一个XML文档中, 必须有且且仅允许有一个根标记
正例:

	

		张三

		李四

	 

反例:

	李四

	麻子
5.标记可以嵌套, 但是不允许交叉
正例:

	 

		李四 

		18

	 

反例:

	 

		李四 

		18

	
6.标记名称允许重复 7.标记除了开始和结束 , 还有属性

(1)属性, 由属性名和属性值组成

(2)每一个属性是一个键值对

(3)属性名不允许重复 , 键与值之间使用等号连接, 多个属性之间使用空格分割,其中属性值必须被引号引住

      

		 

			李四 

			18

	    

	    

			李四

	        18

	    

	
8.注释

注释不能写在文档文档声明前 注释不能嵌套注释格式: 注释开始:

三、XML的解析方法 1.SAX解析
解析方式是事件驱动机制 SAX 解析器 , 逐行读取 XML 文件解析 , 每当解析到一个标签的开始 / 结束 / 内容 / 属性时 , 发事件 我们可以编写程序在这些事件发生时 , 进行相应的处理
 优点:
分析能够立即开始,而不是等待所有的数据被处理 逐行加载 , 节省内存 . 有助于解析大于系统内存的文档 有时不必解析整个文档 , 它可以在某个条件得到满足时停止解析
缺点:
1. 单向解析,无法定位文档层次,无法同时访问同一文档的不同部分数据 2. 无法得知事件发生时元素的层次 , 只能自己维护节点的父 / 子关系 3. 只读解析方式 , 无法修改 XML 文档的内容
2.DOM解析 是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准,分析该结构通常需要加载整个 文档和内存中建立文档树模型 . 程序员可以通过 *** 作文档树 , 来完成数据的获取修改删除等 优点: 
文档在内存中加载 , 允许对数据和结构做出更改 访问是双向的,可以在任何时候在树中双向解析数据 
 缺点:

文档全部加载在内存中 , 消耗资源大

3.DJOM解析 目的是成为 Java 特定文档模型,它简化与 XML 的交互并且比使用 DOM 实现更快。由于是第一 Java 特定模型, JDOM一直得到大力推广和促进。 JDOM 文档声明其目的是 使用 20% (或更少)的精力解决 80% (或更多) Java/XML 问题 优点:

使用具体类而不是接口,简化了DOMAPI

大量使用了 Java 集合类,方便了 Java 开发人员
缺点:
没有较好的灵活性 性能不是那么优异
 4.DOM4J 它是 JDOM 的一种智能分支。它合并了许多超出基本 XML 文档表示的功能,包括集成的 XPath 支持、 XML Schema 支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项,DOM4J 是一个非常优秀的 Java XML API ,具有性能优异、功能强大和极端易用使用的特点,同时它也是一 个开放源代码的软件。 四、DOM4J使用实例 1.DOM4J解析XML

步骤:

(1)引入jar文件 dom4j.jar

(2)创建一个指向XML文件的输入流FileInputStream fis = new FileInputStream(“xml文件的地址”);

(3)创建一个XML读取工具对象SAXReader sr = new SAXReader();

(4)使用读取工具对象, 读取XML文档的输入流 , 并得到文档对象Document doc = sr.read(fis);(5)通过文档对象, 获取XML文档中的根元素对象Element root = doc.getRootElement();

2.文件对象(Document)

文件对象指的是加载到内存的 整个XML文档

常用方法:

(1)通过文档对象, 获取XML文档中的根元素对象Element root = doc.getRootElement();

(2)添加根节点Element root = doc.addElement(“根节点名称”);

 3.元素对象(Element) 

指的是XML文档中的单个节点

常用方法:

(1)获取节点名称String getName();

(2)获取节点内容String getText();

(3)设置节点内容String setText();

(4)根据子节点的名称 , 获取匹配名称的第一个子节点对象.Element element(String 子节点名称);

(5)获取所有的子节点对象

List elements();

(6) 获取节点的属性值String attributeValue(String 属性名称);

(7)获取子节点的内容String elementText(String 子节点名称);

(8)添加子节点Element addElement(String 子节点名称);

4.XPATH解析XML 路径表达式:

通过路径快速的查找一个或一组元素

1. / : 从根节点开始查找 2. // : 从发起查找的节点位置 查找后代节点 *** 3. . : 查找当前节点 4. .. : 查找父节点 5. @ : 选择属性 . * 属性使用方式 : [@ 属性名 =' '] [@ 属性名 >' '] [@ 属性名 <' '] [@ 属性名 !=' ']
使用步骤: 通过 Node 类的两个方法 , 来完成查找 :(Node Document Element 的父接口 )
方法 1. // 根据路径表达式 , 查找匹配的单个节点 Element e = selectSingleNode(" 路径表达式 "); 方法 2. List es = selectNodes(" 路径表达式 ");
 五、Java生成XML
步骤 : 1. 通过文档帮助器 (DocumentHelper) , 创建空的文档对象 Document doc = DocumentHelper.createDocument(); 2. 通过文档对象 , 向其中添加根节点 Element root = doc.addElement(" 根节点名称 "); 3. 通过根节点对象 root , 丰富我们的子节点 Element e = root.addElement(" 元素名称 "); 4. 创建一个文件输出流 , 用于存储 XML 文件 FileOutputStream fos = new FileOutputStream(" 要存储的位置 "); 5. 将文件输出流 , 转换为 XML 文档输出流 XMLWriter xw = new XMLWriter(fos); 6. 写出文档 xw.write(doc); 7. 释放资源 xw.close();
六、XStream的使用  快速的将 Java 中的对象 , 转换为 XML 字符串
使用步骤 : 1. 创建 XStream 对象 XStream x = new XStream(); 2. 修改类生成的节点名称 ( 默认节点名称为 包名 . 类名 ) x.alias(" 节点名称 ", 类名 .class); 3. 传入对象 , 生成 XML 字符串 String xml 字符串 = x.toXML( 对象 );
七、JSON简介
JSON: JavaScript Object Notation JS 对象简谱 , 是一种轻量级的数据交换格式.JSON就是 Javascript 对象和数组的字符串表示法,它使用文本表示一个 JS 对象或数组的信息,因此,JSON 的本质是字符串。在作用上类似于 XML,专门用于存储和传输数据,但是 JSON 比 XML 更小、更快、更易解析。
1.对象格式 一个对象 , 由一个大括号表示 ,括号中描述对象的属性, 通过键值对来描述对象的属性
格式 : (1)键与值之间使用冒号连接 , 多个键值对之间使用逗号分隔 . (2)键值对的键 应使用引号引住 ( 通常 Java 解析时 , 键不使用引号会报错 . JS 能正确解 .) (3)键值对的值 , 可以是 JS 中的任意类型的数据
2.数组格式 
JSON 格式中可以与对象互相嵌套 [ 元素 1, 元素 2...]
八、Java与JSON
做什么 ? Java 中的对象 快速的转换为 JSON 格式的字符串 . JSON 格式的字符串 , 转换为 Java 的对象

1.GSON 将对象转换为JSON字符串
1. 引入 JAR 2. 在需要转换 JSON 字符串的位置编写如下代码即可 :     String json = new Gson (). toJSON ( 要转换的对象 );
 将JSON字符串转换为对象
1. 引入 JAR 2. 在需要转换 Java 对象的位置 , 编写如下代码 :     对象 = new Gson (). fromJson ( JSON 字符串 , 对象类型 . class );
2.FastJson  将对象转换为JSON字符串
转换 JSON 字符串的步骤 : 1. 引入 JAR 2.在需要转换 JSON 字符串的位置编写如下代码即可 :     String json = JSON . toJSONString ( 要转换的对象 );
将JSON字符串转换为对象 
1. 引入 JAR 2. 在需要转换 Java 对象的位置 , 编写如下代码 : 类型 对象名 = JSON . parseObject ( JSON 字符串 , 类型 . class ); List < 类型 > list = JSON . parseArray ( JSON 字符串 , 类型 . class );

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/889921.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-14
下一篇 2022-05-14

发表评论

登录后才能评论

评论列表(0条)

保存