目录
一、XML
XML : 可扩展标记语言。
特点:
- xml具有平台无关性, 是一门独立的标记语言.
- xml具有自我描述性
1.1、XML语法格式
1. XML文档声明
声明格式 :<?xml version="1.0" encoding="UTF-8"?>
必要的声明格式, 且必须写在XML文件的首行。
2.标签(元素 / 节点 / 标记)
XML文件,实则是由各类标签组合起来的。
标签语法: 一个标签包含下面两个标记
开始标记----格式 : <name>
结束标记----格式 : </name>
除了“/”,其余内容应该相同,这样才是一个完整的标签
标签名称: 可以自定义名称,(也就印证了前文说到的 可扩展)。但必须遵循以下命名规则:
- 名称可以含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能以字符 “xml”(或者 XML、Xml)开始
- 名称不能包含空格,不能包含冒号(:)
- 名称区分大小写
3.需要注意的点:
- 一个XML文件里面,必须有且仅有一个 根标签。
- 标签可以嵌套,但不允许交叉。(除根标签外,其余标签的开始标记,应写在上一个标签的结束标签后面)
- 标签的层级称呼 (子标记, 父标记 , 兄弟标记, 后代标记 ,祖先标记)
- 标签允许重复
- 标签还有属性。例子: <person id="1001" groupid="1"> </person>
- XML文件的注释格式:<!-- 注释内容 -->
下面给出一个例子:
<?xml version="1.0" encoding="UTF-8"?> <books> <book id="1001"> <name>金苹果</name> <info>锄禾日当午</info> </book> <book id="1002"> <name>银苹果</name> <info>汗滴禾下土</info> </book> </books>
4.进阶语法CDATA
CDATA 是不应该由 XML 解析器解析的文本数据。
像 "<" 和 "&" 字符在 XML 元素中都是非法的。
- "<" 会产生错误,因为解析器会把该字符解释为新元素的开始。
- "&" 会产生错误,因为解析器会把该字符解释为字符实体的开始
为了避免错误,可以将脚本代码定义为CDATA。
CDATA部分中的所有内容都会被解析器忽略。
格式: <![ CDATA[ 内容 ]]>
<naem><![CDATA[ 你好 ]]></naem>
1.2、XML解析
XML解析分类: (一共四种)
- SAX解析
- DOM解析 :(下面为扩展版)
- JDOM解析
- DOM4J解析 (常用)
各有优缺点!
下面介绍DOM4J解析。
DOM4J解析XML 步骤:
- 创建一个指向XML文件的输入流
- 创建一个读取XML的工具对象
- 读取工具对象,利用read()方法,读取XML文件输入流,返回一个文档对象
- 通过文档对象,获取XML文件获取根标签。
//1. 获取输入流,得到xml文件 FileInputStream fis = new FileInputStream("XML文件,本地地址"); //2.创建XML读取对象,此刻只是创建对象,该对象还不能读取 SAXReader sr = new SAXReader(); //3.此刻sr对象 通过read方法,读取;并返回一个 Document文档对象doc Document doc = sr.read(fis); //4.通过读取到xml的doc,获取根元素 ; 并返回Element对象 root Element root = doc.getRootElement();
URL url = new URL( "http://******网页XML文件链接 "); //1. 打开网页连接 URLConnection conn = url.openConnection(); //2.相当于 前面第一步,获取输入流,得到xml文件 InputStream fis = conn.getInputStream(); //3.创建XML 的读取对象 SAXReader sr = new SAXReader(); //4.读取,返回文档对象 Document doc = sr.read(fis); //5.读取根元素 Element root = doc.getRootElement();
上面代码中可看到 Document Element 。
Document 是指获取到了整个XML文档——文档对象。 (doc ——> XML文档)
Element 是指XML文档里面的各类 单个标签——标签对象。(root ——> 标签)
常见方法:
Element root = doc.getRootElement(); // getRootElement 获取跟标签 Element book1 = root.element("book"); //通过根标签 + element()方法 获取跟标签下面名为“book”的子标签 String name = book1.getName(); //获取该标签的 名字 String text = book1.getText(); //获取标签节点内容,如果该标签下面只含有标签,没有其余内容,则是获取不到的 List<Element> elements = root.elements(); //获取根标签下,所有子标签,返回一个List集合 Element id = root.addAttribute("id", "20"); //为标签设置 属性 和 值 String text = book.elementText("book"); //获取标签名为“book” 的 内容 addElement("标签名称") //文档对象调用,则是添加根标签; 根标签调用,则是添加子标签
1.3、XML文件生成
//1. 通过文档帮助器,创建一个文档对象 Document doc = DocumentHelper.createDocument(); //2. 给文档添加第一个节点(根节点) Element books = doc.addElement("books"); //3. 通过根节点, 丰富子节点 Element book1 = books.addElement("book"); book1.setText("java学习路"); Element book2 = books.addElement("book"); book2.setText("java放弃路"); //books 根标签下,就包含了两个book标签。 //4. 创建一个文件输出流 FileOutputStream fos = new FileOutputStream("books2.xml"); //5. 将输出流转换为XML输出流 XMLWriter xw = new XMLWriter(fos); //6. 写出文档 xw.write(doc); //7. 释放资源 xw.close();
二、JSON
JSON : 是一种轻量级的数据交换格式
Java对象 ← → JSON格式的字符串 (转换)
2.1、json格式
eg: 一本书
书名
简介
XML格式为:
<?xml version="1.0" encoding="UTF-8"?> <book id="1001"> <name>金苹果</name> <info>锄禾日当午</info> </book>
JSON格式为:
{ "name" : "金苹果", "info" : "种植苹果" }
JSON对象, 由一个大括号表示
括号中描述对象的属性, 通过键值对来描述对象的属性
格式:
- 键与值之间使用冒号连接, 多个键值对之间使用逗号分隔.
- 键值对的键应使用引号引住 (通常Java解析时, 键不使用引号会报错. 而JS能正确解析.)
- 键值对的值, 可以是JS中的任意类型的数据
2.2、JSON解析
针对于JSON解析,我们常用的有两种解析方式 : Gson && FastJson
2.2.1、Gson
- JAVA对象 → JSON字符串 Gson对象.toJson()
Gson对象 调用toJson()方法 传入java对象 , 返回JSON格式的字符串
//1. 创建Gson对象 Gson g = new Gson(); //2. 创建JAVA对象 Book b = new Book("100","金苹果","种植苹果真辛苦"); //3. 转换 String s = g.toJson(b);
- JSON字符串 → JAVA对象 Gson对象.fromJson()
Gson对象 调用fromJson()方法 传入JSON字符串 ,返回Book类对象
//1. 创建Gson对象 Gson g = new Gson(); /** * 2. JSON格式 转换 : * { * "id" : "100", * "name" : "金苹果", * "info":"种植苹果真辛苦" * } */ Book b = g.fromJson(" {\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"种植苹果真辛苦\"}",Book.class);
2.2.2、FastJson
- JAVA对象 → JSON字符串 JSON.toJSONString ()
JSON 调用toJSONString()方法 传入JAVA对象 , 返回JSON格式字符串
Book book = new Book("100","金苹果","种植苹果真辛苦"); // 转换 String json = JSON.toJSONString(book);
- JSON字符串 → JAVA对象 JSON.parseObject ()
JSON 调用parseObject()方法 传入JSON字符串 , 返回JAVA对象
String text = "{\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"种植苹果真辛苦\"}"; Book book = JSON.parseObject(text, Book.class);
三、相关jar包
针对于XML、JSON解析,java需要导入相应的jar包。下面介绍如何导入这些jar包,到我们的项目里去。
1.在项目工程下创建“lib”目录
2.把jar文件,复制到“lib”文件夹中区
3. 其余操作 及 jar文件,可以通过下面网盘链接获取
jar包链接
提取码:0928
感谢观看!!!