一、什么是xml?
一种可扩展性的标记性语言
二、xml的作用?
- 用来保存数据,而且这些数据具有自我描述性
- 它还可以作为项目或者模块的配置文件
- 还可以作为网络传输数据的格式(JSON为主)
三、xml语法
- 文档声明
<?xml version="1.0" encoding="UTF-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<!--以上内容就是xml文件的声明
version="1.0" 表示xml的版本
encoding="UTF-8"
-->
- 元素(标签)
- xml属性
与html相似。 - xml注释
- 文本区域(CDATA区)
四、解析技术
- xm与htmll是可扩展性标记语言。他们都可以被w3c组织制定的dom技术解析。
- 早期jdk为我们提供了两种方法解析:dom与sax,但是已经全部过时。
- 第三方解析:jdom在dom基础上进行了封装。dom4j又对jdom进行了封装。pull主要用在Android手机开发,是在跟sax非常类似都是事件机制解析xml文件。
五、Dom4j类库的使用
@Test
public void test1() {
//创建一个SAXReader输入流,读取xml配置文件,生成Document对象
SAXReader saxReader =new SAXReader();
try {
Document document = saxReader.read("src/books.xml");
System.out.println(document);
} catch (DocumentException e) {
e.printStackTrace();
}
}
//读取books.xml文件生成book类
@Test
public void test2() throws DocumentException {
//1. 读取books.xml文件
SAXReader reader = new SAXReader();
Document document = reader.read("src/books.xml");
//2.通过Document对象获取根元素
Element rootElement = document.getRootElement();
// System.out.println(rootElement);
//3.通过根元素获取book标签对象
//element()与eements()都是通过标签名查找子元素
List<Element> books = rootElement.elements("book");
//4.遍历,处理每个book标签转换为Book类
for (Element book: books
) {
//asXML():把标签字符转化为标签字符串
//System.out.println(book.asXML().toString());
Element nameele = book.element("name");
//System.out.println(name.asXML());
//getText() 可以获取标签中的文本内容
String name = nameele.getText();
//直接获取指定标签名的文本内容。
//System.out.println(price);
String price = book.elementText("price");
String author = book.elementText("author");
String s = book.attributeValue("sn");
System.out.println(new Book(s,name, BigDecimal.valueOf(Double.parseDouble(price)),author));
}
}