XML与JSON
- XML
特性:独立的无平台性的具有自我描述性的标记语言
学习的用处:
与非java语言传输文件与对象
配置文件
网络传输
数据存储
开头有自声明<?xml version = "1.0" encoding = "UTF-8"?> 文档由一个个的标记组成
tips:不可以数字,标点符号,xml类似字母开头
不可以有空格和冒号
可以嵌套不可以交叉
有且仅有一个根节点
属性是一个个的键值对,最好都用双引号框起来,不同键值对之间用空格隔开就好了。
- 我们主要看DOM4J的使用
//获取输入流
FileInputStream fis = new FileInputStream("D:\\IntelliJ IDEA 2020.1\\Kaikeba\\src\\com\\java\\homework4_9\\Demo1.xml");
//创建xml读取对象
SAXReader sr = new SAXReader();
//读取并得到文档对象
Document document = sr.read(fis);
//通过文档获取根元素
Element rootElement = document.getRootElement();
//开始解析元素
System.out.println(rootElement.getName());
//获取的是子节点的数据
Element book = rootElement.element("book");
Element name = book.element("name");
System.out.println(name.getText());
- 介绍一下Xpath
List <Node> names= document.selectNodes("//book[@id = '1001']//name");
这样的类型,
介绍下表达式
/ 表示根节点
// 发起节点查询他的后代
. 当前节点
… 父节点
@ 选择属性,数组要在【】中@属性
- 借助Java生成XML
借助文档帮助器DocumentHelper的creatDocument();
addElment()添加根节点
setText()设置内容
addAttribute()添加属性
最后借助输出流输出。
//通过文档帮助器,建立一个文档对象
Document document = DocumentHelper.createDocument();
//添加第一个节点
Element books = document.addElement("books");
//丰富子节点
for(int i=0;i<100;i++){
Element book = books.addElement("book");
Element name = book.addElement("name");
name.setText(i + "月亮与六便士");
Element info = book.addElement("info");
info.setText(i + "没有月光,没有钱");
}
//创建一个文件输出流
FileOutputStream fos = new FileOutputStream("D:\\桌面\\新建文件夹//books.xml");
//转变为XML输出流
XMLWriter xmlWriter = new XMLWriter(fos);
//写文档
xmlWriter.write(document);
//释放资源
xmlWriter.close();
5.XStream对象
alias(name , 包名.类名)
toXML( p )变成XML
- JSON
直接上代码
//创建Gson对象
Gson g = new Gson();
//转换
Book b = new Book("100","苹果","苹果好吃");
String s = g.toJson(b);
System.out.println(s);
Book book = new Book("1002","唐诗三百首","床前明月光");
//1. 转换
String json = JSON.toJSONString(book);
System.out.println(json);
//1. 创建Gson对象
Gson g = new Gson();
//2. 转换 : {"id":"100","name":"金苹果","info":"种植苹果真辛苦"}
HashMap data = g.fromJson("{\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"种植苹果真辛苦\",\"page\":[\"锄禾日当午\",\"汗滴禾下土\",\"嘿嘿嘿嘿嘿\"]}", HashMap.class);
List page = (List) data.get("page");
System.out.println(page.get(1));
//1. 转换 : ["一二三","二三四","三四五"]
List<String> strings = JSON.parseArray("[\"一二三\",\"二三四\",\"三四五\"]", String.class);
System.out.println(strings.get(1));