1. XML 的定义、作用、规范及语法
- XML(Extensible Markup Language)可扩展的标记性语言
- 用来保存数据,而且这些数据具有自我描述性
- 用来作为项目或者模块的配置文件
- 用来作为网络传输数据的格式(现在以 json 为主)
- XML 文档示例:文档声明、元素、xml 属性、xml 注释、文本区域(CDATA)区
<?xml version="1.0" encoding="utf-8" ?>
<books>
<book isbn="123123123123">
<name>平凡的世界</name>
<author>路遥</author>
<price>160</price>
</book>
</books>
- 名称可以含字母、数字以及其他字符
- 名称不能以数字或者标点符号开始
- 名称不能以 xml 开头
- 名称不能包含空格
- XML 文档必须有根元素,根元素就是顶级元素,所谓顶级元素是指没有父标签的元素
- CDATA 区中的文本不会被 xml 解析器解析为 xml 格式,被视作纯文本对待
<![CDATA[<Spring-_-Bear]]>
2. XML 解析技术
- 不管是 html 文件还是 xml 文件它们都是标记型文档,都可以使用 w3c 组织指定的 dom 技术来解析
- 使用 dom4j 读取 xml 文件得到 Document 对象,获取配置文件内容
@Test
public void dom4JTest() throws DocumentException {
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);
}
}
1. JSON 的定义和访问
- JSON(JavaScript Object Notation)是一种轻量级(较 xml 而言)的数据交换格式,易于常人的编写与阅读的同时也易于机器解析和生成。JSON 采用完全独立于语言的文本格式,高级编程语言支持广泛,使得 JSON 成为理想的数据交换格式
- 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 中的两种常用转换方法
- json 的存在有两种形式,一种是以对象的形式存在叫做 json 对象;另一种是以字符串的形式存在叫做 json 字符串
JSON.stringify(object) 把 json 对象转换成为 json 字符串JSON.parse(string) 将 json 字符串解析为 json 对象- 获取 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));
Gson gson = new Gson();
String peopleJsonString = gson.toJson(peopleList);
System.out.println(peopleJsonString);
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);
|