前言
学完XML与JSON,博主迫不及待与大家总结一下自己整理的一篇关于XML&JSON的学习笔记
一、XML简介 1.特性
2.XML的作用(1)xml具有平台无关性, 是一门独立的标记语言
(2)xml具有自我描述性
3.XML 和 HTML 类似,也是一种标记语言。那XML和HTML有什么区别呢(1)网络数据传输
(2)数据存储
(3)配置文件
4.XML的缺点HTML 被设计用来描述网页上的内容,是网页内容的载体
XML 被设计用来传输和存储数据,是数据的载体
二、XML的语法格式 1.XML文档声明XML 格式臃肿,和数据无关的代码多,体积大,传输效率低
在 Javascript 中解析 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 问题 ” 优点:文档全部加载在内存中 , 消耗资源大
缺点:使用具体类而不是接口,简化了DOM的API
大量使用了 Java 集合类,方便了 Java 开发人员
没有较好的灵活性 性能不是那么优异4.DOM4J 它是 JDOM 的一种智能分支。它合并了许多超出基本 XML 文档表示的功能,包括集成的 XPath 支持、 XML Schema 支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项,DOM4J 是一个非常优秀的 Java XML API ,具有性能优异、功能强大和极端易用使用的特点,同时它也是一 个开放源代码的软件。 四、DOM4J使用实例 1.DOM4J解析XML
2.文件对象(Document)步骤:
(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();
文件对象指的是加载到内存的 整个XML文档
3.元素对象(Element)常用方法:
(1)通过文档对象, 获取XML文档中的根元素对象Element root = doc.getRootElement();
(2)添加根节点Element root = doc.addElement(“根节点名称”);
指的是XML文档中的单个节点
4.XPATH解析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 子节点名称);
通过路径快速的查找一个或一组元素
1. / : 从根节点开始查找 2. // : 从发起查找的节点位置 查找后代节点 *** 3. . : 查找当前节点 4. .. : 查找父节点 5. @ : 选择属性 . * 属性使用方式 : [@ 属性名 =' 值 '] [@ 属性名 >' 值 '] [@ 属性名 <' 值 '] [@ 属性名 !=' 值 ']使用步骤: 通过 Node 类的两个方法 , 来完成查找 :(Node 是 Document 与 Element 的父接口 )
方法 1. // 根据路径表达式 , 查找匹配的单个节点 Element e = selectSingleNode(" 路径表达式 "); 方法 2. List五、Java生成XMLes = selectNodes(" 路径表达式 ");
步骤 : 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 );
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)