IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> [JavaWeb]XML 和 JSON -> 正文阅读

[Java知识库][JavaWeb]XML 和 JSON

一、XML

1. XML 的定义、作用、规范及语法

  1. XML(Extensible Markup Language)可扩展的标记性语言
  2. 用来保存数据,而且这些数据具有自我描述性
  3. 用来作为项目或者模块的配置文件
  4. 用来作为网络传输数据的格式(现在以 json 为主)
  5. XML 文档示例:文档声明、元素、xml 属性、xml 注释、文本区域(CDATA)区
<?xml version="1.0" encoding="utf-8" ?>
<books>
    <book isbn="123123123123">
        <name>平凡的世界</name>
        <author>路遥</author>
        <price>160</price>
    </book>
</books>
  1. 名称可以含字母、数字以及其他字符
  2. 名称不能以数字或者标点符号开始
  3. 名称不能以 xml 开头
  4. 名称不能包含空格
  5. XML 文档必须有根元素,根元素就是顶级元素,所谓顶级元素是指没有父标签的元素
  6. CDATA 区中的文本不会被 xml 解析器解析为 xml 格式,被视作纯文本对待 <![CDATA[<Spring-_-Bear]]>

2. XML 解析技术

  1. 不管是 html 文件还是 xml 文件它们都是标记型文档,都可以使用 w3c 组织指定的 dom 技术来解析
  2. 使用 dom4j 读取 xml 文件得到 Document 对象,获取配置文件内容
@Test
public void dom4JTest() throws DocumentException {
    // 1. 创建 SaxReader 对象输入流,去读取 xml 配置文件,生成 document 对象
    SAXReader saxReader = new SAXReader();
    Document document = saxReader.read("books.xml");
    System.out.println(document);
    
    // 获取根元素
	Element rootElement = document.getRootElement();
	// 获取子元素集合
	List<Element> books = rootElement.elements("book");
	for (Element book : books) {
        // 获取子元素属性值
        String isbn = book.attributeValue("isbn");
        // 分别获取子元素的子元素
        Element nameElement = book.element("name");
        String nameText = nameElement.getText();
        String authorText = book.elementText("author");
        double price = Double.parseDouble(book.elementText("price"));
        Book book1 = new Book(isbn, nameText, authorText, price);
        System.out.println(book1);
	}
}

二、JSON

1. JSON 的定义和访问

  1. JSON(JavaScript Object Notation)是一种轻量级(较 xml 而言)的数据交换格式,易于常人的编写与阅读的同时也易于机器解析和生成。JSON 采用完全独立于语言的文本格式,高级编程语言支持广泛,使得 JSON 成为理想的数据交换格式
  2. json 是由键值对组成,并且由(花括号)包围。每个键由引号引起来,键和值之间使用冒号分隔,多组键值对之间使用逗号进行分隔
var jsonObj = {
    "key1": 12,
    "key2": "abc",
    "key3": true,
    "key4": [11, "array", false],
    "key5": {
        "key5_1": 324,
        "key5_2": "key5_2_value"
    }
}

2. JSON 在 JavaScript 中的两种常用转换方法

  1. json 的存在有两种形式,一种是以对象的形式存在叫做 json 对象;另一种是以字符串的形式存在叫做 json 字符串
  2. JSON.stringify(object) 把 json 对象转换成为 json 字符串
  3. JSON.parse(string) 将 json 字符串解析为 json 对象
  4. 获取 json 中的数据时解析为 json 对象,在客户端和服务器之间传递数据时使用字符串

3. JavaBean 和 JSON 的相互转换

Gson gson = new Gson();
String jsonString = gson.toJson(new Person("Bear", 22));
System.out.println(jsonString);
Person person = gson.fromJson(jsonString, Person.class);
System.out.println(person);

4. List 集合与 JSON 的相互转换

List<Person> peopleList = new ArrayList<>();
peopleList.add(new Person("bear", 22));
peopleList.add(new Person("spring", 11));

// 将 List 集合转换为 json
Gson gson = new Gson();
String peopleJsonString = gson.toJson(peopleList);
System.out.println(peopleJsonString);

// 将 json 字符串转换为 List 对象,使用 gson.fromJson() 方法的第二个参数需要自定义类继承 com.google.gson.reflect.TypeToken 类,并在泛型中指明类型
List<Person> people = gson.fromJson(peopleJsonString, new PersonListType().getType());
System.out.println(people);

public class PersonListType extends com.google.gson.reflect.TypeToken<List<Person>> {
}

5. Map 集合和 JSON 的相互转换

Map<Integer, Person> personMap = new HashMap<>();
personMap.put(1, new Person("1", 1));
personMap.put(2, new Person("2", 2));

Gson gson = new Gson();
String personJsonString = gson.toJson(personMap);
System.out.println(personJsonString);

// 使用匿名内部类以替代自定义的实现类
Map<Integer, Person> map = gson.fromJson(personJsonString, new TypeToken<Map<Integer, Person>>() {
}.getType());
System.out.println(map);
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-03-31 23:49:43  更:2022-03-31 23:50:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:44:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码