XML(EXtensible Markup Language),可扩展标记语言
主要目的是要在不同的机器之间进行通信的数据规范
特点
XML与操作系统、编程语言的开发平台无关
实现不同系统之间的数据交换
作用
数据交互
配置应用程序和网站
Ajax基石

声明
文档元素描述信息(文档结构)

XML文档内容由一系列标签元素组成
<元素名 属性名=“属性值”>元素内容元素名>
空元素:
属性值用双引号包裹
一个元素可以有多个属性
属性值中不能直接包含<、“、&
不建议使用的字符:‘、>
1)所有XML元素都必须有结束标签
2)XML标签对大小写敏感
3)XML必须正确的嵌套
4)同级标签以缩进对齐
5)元素名称可以包含字母、数字或其他的字符
6)元素名称不能以数字或者标点符号开始
7)元素名称中不能含空格
编写XML步骤(以MyEclipse为例)
1.点击文件右击,点开New选项,选中Other

2.选择中间XML(Basic Templates),点击next选项
3.设置该XML文件名,可以是中文,点击Finish完成
常见的三种解析技术
1.DOM
基于XML文档树结构的解析
适用于多次访问的XML文档
特点:比较消耗资源
2.SAX
基于事件的解析
适用于大数据量的XML文档
特点:占用资源少,内存消耗小
3.DOM4J
非常优秀的Java XML API
性能优异、功能强大
开放源代码
本文简单介绍DOM解析XML,下一篇详细介绍DOM和DOM4j解析XML,对SAX感兴趣的自己去查(能说我也不会吗哈哈)
DOM介绍
文档对象模型(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案例:
- "1.0" encoding="UTF-8"?>
- <PhoneInfo>
- <Brand name="华为">
- <Type name="U8650" />
- <Type name="HW123" />
- <Type name="HW321" />
- Brand>
- <Brand name="苹果">
- <Type name="iPhone13" />
- Brand>
- PhoneInfo>