XML与JSON专题
1. XML(可扩展标记语言)介绍
特性:①xml具有平台无关性, 是一门独立的标记语言.
②xml具有自我描述性
.注意:XML文件是保存XML数据的一种方式 XML数据也可以以其他的方式存在(如在内存中构建XML数据)。 不要将XML语言狭隘的理解成XML文件。
2. XML语法
XML文档由一个个的标记组成.。
开始标记(开放标记):<标记名称>
结束标记(闭合标记):</标记名称>
标记名称: 自定义名称,必须遵循以下命名规则:
①名称可以含字母、数字以及其他的字符
②名称不能以数字或者标点符号开始
③名称不能以字符 “xml”(或者 XML、Xml)开始
④名称不能包含空格,不能包含冒号
⑤名称区分大小写 标记内容: 开始标记与结束标记之间 ,是标记的内容.
如:<name>嵊州猪憋</name>
标记名称允许重复
注释不能写在文档声明前
注释不能嵌套注释
格式: 注释开始:<!--
注释结束:-->
注意:CDATA 是不应该由 XML 解析器解析的文本数据。 像 "<" 和 "&" 字符在 XML 元素中都是非法的。 "<" 会产生错误,因为解析器会把该字符解释为新元素的开始。 "&" 会产生错误,因为解析器会把该字符解释为字符实体的开始。某些文本,比如 JavaScript 代码,包含大量 "<" 或 "&" 字符。为了避免错误,可以将脚本代 码定义为 CDATA。CDATA 部分中的所有内容都会被解析器忽略。 CDATA 部分由 “<![CDATA["开始,由"]]>”结束。
3. XML解析
相关常见面试题整理:
问: Java中有几种XML解析方式 ? 分别是什么 ? 有什么样的优缺点 ?
答:四种。
其中DOM4J解析XML步骤如下:
①引入jar文件 dom4j.jar
② 创建一个指向XML文件的输入流
FileInputStream fis = new FileInputStream("xml文件的地址");
③ 创建一个XML读取工具对象
SAXReader sr = new SAXReader();
④使用读取工具对象, 读取XML文档的输入流 , 并得到文档对象
Document doc = sr.read(fis);
⑥通过文档对象, 获取XML文档中的根元素对象
Element root = doc.getRootElement();
元素对象 Element常用方法如下:
文档对象 Document常用方法如下:
①通过文档对象, 获取XML文档中的根元素对象 Element root = doc.getRootElement();
②添加根节点 Element root = doc.addElement("根节点名称");
解析本地文件案例:
解析网络文件案例:
4. XPATH解析
解析本地文件案例:
解析网络文件案例:
5. Java生成XML
步骤如下:
①通过文档帮助器 (DocumentHelper) , 创建空的文档对象
Document doc = DocumentHelper.createDocument();
②通过文档对象, 向其中添加根节点
Element root = doc.addElement("根节点名称");
③通过根节点对象root , 丰富我们的子节点
Element e = root.addElement("元素名称");
④创建一个文件输出流 ,用于存储XML文件
FileOutputStream fos = new FileOutputStream("要存储的位置");
⑤将文件输出流, 转换为XML文档输出流
XMLWriter xw = new XMLWriter(fos);
⑥写出文档
xw.write(doc);
⑦ 释放资源
xw.close();
案例如下:
6. XStream 的使用
使用步骤如下:
①创建XStream 对象
XStream x = new XStream();
②修改类生成的节点名称 (默认节点名称为 包名.类名)
x.alias("节点名称",类名.class);
③传入对象 , 生成XML字符串 String xml字符串 = x.toXML(对象);
案例:
7. JSON介绍
JavaScript Object Notation JS对象简谱 , 是一种轻量级的数据交换格式。
对象格式的区别:
java:
js:
var b = new Object();
b.name = "金苹果";
b.info = "种苹果";
XML:
JSON:
{
"name":"金苹果",
"info":"种苹果"
}
案例:
8. JSON解析
有什么作用:将Java中的对象 快速的转换为JSON格式的字符串. 将JSON格式的字符串转换为Java的对象.
Gson:
FastJson:
将JSON字符串转换为对象: