XML(EXtensible Markup Language),可扩展标记语言
主要目的是要在不同的机器之间进行通信的数据规范
特点
XML与操作系统、编程语言的开发平台无关
实现不同系统之间的数据交换
作用
数据交互
配置应用程序和网站
Ajax基石
XML文档结构声明
文档元素描述信息(文档结构)
XML标签
XML文档内容由一系列标签元素组成
元素内容
空元素: ,,
属性值用双引号包裹
一个元素可以有多个属性
属性值中不能直接包含
XML编写注意事项1)所有XML元素都必须有结束标签
2)XML标签对大小写敏感
3)XML必须正确的嵌套
4)同级标签以缩进对齐
5)元素名称可以包含字母、数字或其他的字符
6)元素名称不能以数字或者标点符号开始
7)元素名称中不能含空格
编写XML步骤(以MyEclipse为例)
1.点击文件右击,点开New选项,选中Other
2.选择中间XML(Basic Templates),点击next选项
3.设置该XML文件名,可以是中文,点击Finish完成
解析XML技术
常见的三种解析技术
1.DOM
基于XML文档树结构的解析
适用于多次访问的XML文档
特点:比较消耗资源
2.SAX
基于事件的解析
适用于大数据量的XML文档
特点:占用资源少,内存消耗小
3.DOM4J
非常优秀的Java XML API
性能优异、功能强大
开放源代码
本文简单介绍DOM解析XML,下一篇详细介绍DOM和DOM4j解析XML,对SAX感兴趣的自己去查(能说我也不会吗哈哈)
DOM解析XMLDOM介绍
文档对象模型(Document Object Model) DOM把XML文档映射成一个倒挂的树
常用接口介绍
DOM解析包:org.w3c.dom
常用接口
常用方法
说明
Document:表示整个 XML 文档
NodeList getElementsByTagName(String Tag)
按文档顺序返回文档中指定标记名称的所有元素集合
Element createElement(String tagName)
创建指定标记名称的元素
Node:该文档树中的单个节点
NodeList getChildNodes()
获取该元素的所有子节点,返回节点集合
Element:XML 文档中的一个元素
String getTagName()
获取元素名称
DOM解析XML文件步骤
1.创建解析器工厂对象
2.解析器工厂对象创建解析器对象
3.解析器对象指定XML文件创建Document对象
4.以Document对象为起点操作DOM树
package demo02;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
public class XmlDocumentDemo01 {
public static void main(String[] args) {
/*需求:将XML文件转换成DocumentBuilderFactory
*
* 1)创建解析器工厂对象DocumentBuilderFactory
* 2)通过解析器工厂对象创建解析器对象
* 3)通过解析器对象调用方法将XML文件转换为Document对象
* 4)通过Document对象去操作XML文件里的数据
*
*/
// 第一步:获取解析器工厂对象
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
try {
//第二步:通过解析器工厂对象dbf创建解析器对象
DocumentBuilder db=dbf.newDocumentBuilder();
//第三步:通过解析器对象调用方法将XML文件转换成Document对象
Document document = db.parse("收藏信息.xml");
System.out.println(document);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
定义一个方法实现获取Document对象操作
package demo02;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
public class XmlDocumentDemo02 {
Document document;
//定义一个方法实现获取Document对象操作
public Document getDocument(String url){
try {
//创建解析器工厂对象
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
//通过解析器工厂独享创建解析器对象
DocumentBuilder db=dbf.newDocumentBuilder();
document=db.parse(url);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return document;
}
}
XML案例: