XML..

XML

基本介绍

xml 可扩展标记语言, 标记:标签  XML通过标签去定义里面的内容

作用:

1作为 一种文件格式 跟.docx类型 可以存储数据,当做小型数据库一样

2用于数据交换,现在用的不是很多,比如一些银行还在使用

3写配置文件:我们需要关注的地方,我们后面的很多框架配置基本上都是xml写的

基本格式

XML..

注意点:

1支持标签自定义

2标签不能乱套,即不能随意嵌套

3大小写敏感,即开始标签大写,结束标签也大写

4属性值必须加引导

5XML 可以形成一棵DOM树

XML..

xml约束

1. DTD约束,即可以编写一个xxx.dtd文档,在里面写你的约束条件
2. schema:一般在web中的配置文件中常见,比如spring的配置, <bean>
 

特殊符号的处理

比如>、<,在xml中可能不会正确解析格式,需要使用一些符号进行替换!
XML..

若有多个这种特殊的符号,可以使用上面的符号一个一个写,但是比较麻烦,所以,我们可以将这种整
体包起来,用CDATA语法!! <![CDATA[" 开始,由 "]]>

注释


<!--你的注释内容-->


xml解析

XML..

 

Dom4j的基本使用
 

https://dom4j.github.io/
参考博文:https://www.cnblogs.com/xiuzhublog/p/13731271.html


作为一个独立的框架/工具,以第三方jar的形式存在的,所以在项目中使用的话,需要引入进
来!!!后面凡是需要的第三方jar包,都需要引入进来!
手动copy,后面我们使用maven去管理!!!!!
 

 下载

XML..

引进到项目中

XML..

 导入后注意观察是否有上面的向右箭头!!!

JSON

信息交换的格式!!
 

1. 能认识JSON格式
2. 会使用解析工具去json,阿里的FastJson,还有别的,比如Gson、hutool(它是一个功能非常全
面的工具集封装,比如操作DB、IO流的读写、解析JSON、加密.........)、Jackson
 

fastjson入口类是com.alibaba.fastjson.JSON,主要的API是JSON.toJSONString,和
parseObject。
 

下载安装
略,同上面的dom4j的下载安装
 

package test02;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class TestFastJSON {

public static void main(String[] args) {
String str = "{\"name\":\"zs\",\"time\":\"\",\"age\":10,\"person\":
{\"sex\":\"male\",\"salary\":222.22},\"sites\":[{\"name\":\"菜鸟教程
\",\"url\":\"www.runoob.com\"},{\"name\":\"google\",\"url\":\"www.google.com\"},
{\"name\":\"微博\",\"url\":\"www.weibo.com\"}]}";

JSONObject jsonObject = JSON.parseObject(str);


//todo 1.根据key获取value
Object name = jsonObject.get("name");
//Object name = jsonObject.getString("name");
System.out.println(name);
//todo 2.获取json串中的数组
JSONArray sites = jsonObject.getJSONArray("sites");
//遍历数组
for (int i = 0; i < sites.size(); i++) {
JSONObject jsonArrayObj = sites.getJSONObject(i);
String siteName = jsonArrayObj.getString("name");
String siteUrl = jsonArrayObj.getString("url");
System.out.println(siteName + "," + siteUrl);
} /

/todo 3.拿到一个对象
JSONObject person = jsonObject.getJSONObject("person");
Double salary = person.getDouble("salary");System.out.println(person.getString("sex") + "," + salary);

//todo 4.自动将json串中的值解析出来,封装成一个对象
Human human = JSON.parseObject(str, Human.class);
System.out.println(human);

//todo 6.自动将json串中的值解析出来,转换成一个map
//https://www.cnblogs.com/heqiyoujing/p/9432153.html
Map mapObj = JSONObject.parseObject(str,Map.class);
System.out.println(mapObj);
//=====================================
//将对象、集合、Map转为json字符串
Human p1 = new Human("zaa", 12);
Human p2 = new Human("z22", 12);
Human p3 = new Human("za33", 12);
List<Human> list =new ArrayList<>();
list.add(p1);
list.add(p2);
list.add(p3);
String jsonStr = JSON.toJSONString(p1);
System.out.println(jsonStr);
System.out.println(JSON.toJSONString(list));
Map<String,Human> map = new HashMap<>();
map.put("1001",p1);
map.put("1002",p2);
map.put("1004",p3);
System.out.println(JSON.toJSONString(map));
}
}

 

package test02;
import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.serializer.SerializerFeature;
import java.util.Date;


public class Human {
private String name;
private Integer age;
//@JSONField(serialzeFeatures = {SerializerFeature.WriteMapNullValue})
private String time;
public Human() {}
public Human(String name, Integer age) {
this.name = name;
this.age = age;
} p
ublic void setTime(String time) {
this.time = time;
} p
ublic String getTime() {
return time;
} @
JSONField(serialzeFeatures = {SerializerFeature.WriteMapNullValue})
private Double salary;
public String getName() {
return name;
} p
ublic void setName(String name) {
this.name = name;
} p
ublic Integer getAge() {
return age;
} p
ublic void setAge(Integer age) {
this.age = age;
} p
ublic Double getSalary() {
return salary;
} p
ublic void setSalary(Double salary) {
this.salary = salary;
} @
Override
public String toString() {
return "Human{" +
"name='" + name + '\'' +
", age=" + age +
", salary=" + salary +
", date=" + time +
'}';
}
}

JSONField 说明
 

可以通过 @JSONField ,去设置很多信息,比如json串中的key的名字、日期型的格式化、是否序列化.....
 

//这两个可能会用到
String name() default "";
String format() default "";
 

扩展
 

Hutool
https://www.hutool.cn/
详细使用参考官方文档,非常详细!!!!!
 

上一篇:golang里的json marshal && unmarshal


下一篇:176. 第二高的薪水