XML简介
-
XML(eXtensible Markup Language)可扩展标记语言。
主要用于数据的存储和传输。 -
特点:
- 纯文本,使用UTF-8的编码模式 - 可嵌套,适合表示结构化数据。
-
XML中有固定的格式,XML首行为:
<?xml version="1.0"?>
XML的格式分为两种:- 格式正确,是指格式是正确的元素需正确嵌套,如:`<isbn lang="CN">1234567</isbn>` - 合法,是指格式正确且可以被DTD或XSD验证。(DTD和XSD:验证XML结构和数据是否有效;)
-
其中XML也有转义符&,特殊的字符有固定的转义。
-
XML中解析有两种方式:DOM和SAX
DOM
DOM就是将XML作为一个树形结构来处理。
使用三个对象表示XML的内容:
- Document:代表整个XML文档;
- Element:代表一个XML元素;
- Attribute:代表一个元素的某个属性。
DOM为例的代码:
<?xml version="1.0" encoding="UTF-8" ?>
<book id="1">
<name>Java核心技术</name>
<author>Cay S. Horstmann</author>
<isbn lang="CN">1234567</isbn>
<tags>
<tag>Java</tag>
<tag>Network</tag>
</tags>
<pubDate/>
</book>
结构图:
使用DOM获取一个XMLDocument对象:
- 获取到XML文件。
- DocumentBuilderFactory 工厂类获取到工厂类对象。
- 根据工厂类实例创建DocumentBuilder 实例。
- DocumentBuilder.parse()用于解析一个XML,参数为一个file文件,返回Document对象。
File file = new File("./book.xml");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(file);
DOM 的优点是便捷,但缺点是占用内存大
SAX
使用SAX,无论XML有多大,占用的内存都很小。它是边读边解析的方式。
InputStream input = Main.class.getResourceAsStream("/book.xml");
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser saxParser = spf.newSAXParser();
saxParser.parse(input, new MyHandler());