1、XML
xml的格式:例如下面这样
<books>
<book>
<name>Java编程入门</name>
<info>讲述了Java学习的基础</info>
</book>
<book>
<name>Java进阶之路</name>
<info>讲述了Java进阶学习,有难度</info>
</book>
</books>
像上面这样的格式即是xml的基本格式一般有一个根节点,然后都是<></>这样的形式里面写入想写的属性将内容进行包装起来。类似于前端web html的写法。
Java接卸xml一般有四种:1. SAX解析 2. DOM解析 3. JDOM解析 4. DOM4J解析
那么我们重点掌握第四种DOM4J解析形式:
它的步骤:
首先需要引入 dom4j.jar 文件
创建一个指向xml文件的输入流`FileInputStram fis = new FileInputStream("xml文件地址");`
创建一个XML读取工具对象`SAXReader sr = new SAXReader(); `切记这里是创建的SAXReader类的对象
使用读取工具对象,读取XML文档的输入流,并得到文档对象` Document doc = sr,read(fis); `
通过文档对象,获取XM文档中的根元素对象 `Element root = doc.getRootElement();`
如果要获取子元素的内容那么可以使用继续下面的操作:
本机文件的解析方式
Element 元素 = 上级元素.element(“元素”);
集合的形式:(列表)
List list = root.elements();
关于元素对象:指的是xml文档中的单个节点。
常用的方法有下列几种:
- 获取节点名称
String getName(); - 获取节点内容
String getText(); - 设置节点内容
String setText(); - 根据子节点的名称 , 获取匹配名称的第一个子节点对象.
Element element(String 子节点名称); - 获取所有的子节点对象 返回的列表形式,可以遍历进行获取单个的。
List elements(); - 获取节点的属性值
String attributeValue(String 属性名称); - 获取子节点的内容
String elementText(String 子节点名称); - 添加子节点
Element addElement(String 子节点名称); - 添加属性
void addAttribute(String 属性名,String 属性值);
DOM4J-XPATH 解析XML
通过Node类的两个方法,来完成查找:
提示:Node是Document和Element的父接口
法1:
//根据路径表达式,查找匹配的单个节点
Node n = doc.selectSingleNode("//book[@id='1001']//name");
法2:
List<Node> names = doc.selectNodes("//book[@id='1001']//name");
for (int i =0;i<names.size();i++){
System.out.println(names.get(i).getName());
System.out.println(names.get(i).getText());
}
2、JSON
格式简单,与键值对相似,有一个{}表示一个对象
{
“name”:“金苹果”
“info”:“介绍”
}
当然数组可以嵌套里面使用 与Java不同的是符号“[]” 例如继续上面的格式:
{
“name”:“金苹果”,
“info”:“介绍”,
“pengyou”:[“铜苹果”,“银苹果”,“铁苹果”]
}
2.1 Gson方式:
首先创建好一个Book类,有三个属性:id、name、info
将对象转化为JSON字符串:首先需要引入gson.jar包
然后再需要转换JSON字符串的位置编写如下代码即可:
String json = new Gson().toJson(要转换的对象);
匿名的方式:String s = new Gson().toJson(new Book("100","金苹果","终止苹果真辛苦"));
返回的结果:
{“id”:“100”,“name”:“金苹果”,“info”:“终止苹果真辛苦”}
Gson对象转换为Book的对象:
Book b = g.fromJson("{\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"终止苹果真辛苦\"}",Book.class);
镶嵌了一个数组list集合类似:
//1。 创建Gson对象
Gson g = new Gson();
//2. 转换:{"id":"100","name":"金苹果","info":"终止苹果真辛苦","page":["锄禾日当午","汗滴禾下土","嘿嘿嘿嘿嘿"]}
HashMap data = g.fromJson("{\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"终止苹果真辛苦\",\"page\":[\"锄禾日当午\",\"汗滴禾下土\",\"嘿嘿嘿嘿嘿\"]}", HashMap.class);
System.out.println(data.get("page")); //[锄禾日当午, 汗滴禾下土, 嘿嘿嘿嘿嘿] 转成了list集合
List page = (List)data.get("page");
System.out.println(page.get(1));
下面一种形式,转成列表形式,取值根据索引取值即可。
//1. 转换 : ["123","456","789"]
List<String> strings = JSON.parseArray("[\"123\",\"456\",\"789\"]", String.class);
System.out.println(strings.get(2)); //789
以后我们常用的将会是JSON。所以要熟练掌握JSON的格式以及运用