XML
什么是xml以及他的作用
第一个xml示范文件
<?xml version="1.0" encoding="UTF-8" ?>
<!--
<?xml version="1.0" encoding="UTF-8 ?>
以上内容就是xml文件的声明
version="1.0" version表示xml的版本
encoding="UTF-8 ? encoding表示xml文件本身的编码
-->
<books><!--books表示多个图书的信息-->
<book sn="SN1232233433"><!--book表示一个图书的信息,sn表示该图书的序列哈-->
<name>时间简史</name><!--name标签表示图书名-->
<author>霍金</author><!--author表示作者-->
<price>75</price><!--表示价格-->
</book>
<book sn="SN12323333333"><!--book表示一个图书的信息,sn表示该图书的序列哈-->
<name>java从入门到放弃</name><!--name标签表示图书名-->
<author>沙老师</author><!--author表示作者-->
<price>9.9</price><!--表示价格-->
</book>
</books>
xml语法介绍
- 1.xml注释的语法和html一样
- 先熟悉一下html标签
- xml对大小写敏感
xml解析技术的介绍
- 以前主要用的是dom和SAX的解析技术,但是现在这2个技术已经过时了(具体参考官方笔记)
现在主要重点和流行的是dom4j技术,因为很多框架的底层用的也是这个技术来解析xml
使用dom4j读取xml文件得到document对象
- 将zip压缩包解压后
- dosc文件夹下面是dom4j的学习文档,从index.html进入
- lib文件夹下面是dom4j所依赖的jar包
- src下面是dom4j的原码和一些测试的代码
使用dom4j来解析下面的内容
- 我们现在需要将xml里面每一个book都解析成Book类中的一个对象实例
首先我们需要将dom4j的jar包添加到我们的模块下面的lib目录下面(lib专门用来放jar包)
- 操作代码
package com.atguku.pojo;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.util.List;
public class Dom4jTest {
public static void main(String[] args) throws DocumentException {
//创建一个SAXReader输入流去读取xml配置文件,生Document对象
SAXReader saxReader = new SAXReader();
Document document = saxReader.read("xml\\src\\books.xml");
//读取book.xml文件生成book类
//1.读取book.xml文件
//2.通过Document对象获取根元素
Element rootElement = document.getRootElement();
//3.通过根元素获取book标签对象
//element()和elements()都是通过标签名查找子元素
List<Element> books = rootElement.elements("book");//如果根元素有多个子元素则用elements
//4.遍历,处理处理每个book标签转换为Book类对象
for (Element book : books) {
//asString()方法将book标签转换为字符串
//System.out.println(book.asXML());
Element nameElement = book.element("name");//得到name标签对象
String nameText = nameElement.getText();//getText可以获得标签中的文本内容
//elementText()可以获得指定标签名的文本内容(就不需要先得到标签对象了)
String priceText = book.elementText("price");
String authorText = book.elementText("author");
//获取属性值
String snValue = book.attributeValue("sn");
//将得到的内容封装成对象
System.out.println(new Book(snValue,nameText,Double.parseDouble(priceText),authorText));
/*
Book{sn = SN12341232, name = 辟邪剑谱, price = 9.9, author = 班主任}
Book{sn = SN12341231, name = 葵花宝典, price = 99.99, author = 班长}
*/
}
}
}