XML简介
- XML–可扩展标记语言 eXtensible Markup Language
- 由W3C组织发布,目前推荐遵守的是W3C组织于2000年发布的XML1.0规范
- XML的使命,就是以一个统一的格式,组织有关系的数据,为不同平台下的应用程序服务
- XML用来传输和存储数据,HTML用来显示数据
- XML没有预定义标签,均为自定义标签
- 嗯,对应的各种语言只需要提供相应的接口和实现即可完成和xml的交互
用途
- 配置文件,包括诸多框架里的配置文件
- JavaWeb中的web.xml
- C3P0中的c3p0-config.xml
- 数据交换格式,遵循XML格式即可完成通用
- 数据存储,
基本语法
- XML声明要么不写,要写就写在第一行,并且前面没有任何其他字符
- 只能有一个根标签
- 标签必须正确结束
- 标签不能交叉嵌套
- 严格区分大小写
- 属性必须有值,且必须加引号
- 标签不能以数字开头
- 注释不能嵌套
- XML文档组成
- XML声明
- version属性指定XML版本,固定值是1.0
- encoding指定的字符集,是告诉解析器使用什么字符集进行解码,而编码是由文本编辑器决定的
- CDATA区
- 当XML文档中需要写一些程序代码、SQL语句或其他不希望XML解析器进行解析的内容时,就可以写在CDATA区中
- XML解析器会将CDATA区中的内容原封不动的输出
- DATA区的定义格式:<![CDATA[…]]>
XML解析
- XML解析是指通过解析器读取XML文档,解释语法,并将文档转化成对象
- 对XML的一切操作都是由解析开始的,所以解析非常重要。
- Java 平台同时提供了 DOM(Document Object Model)和 SAX(Simple API for XML)包,导入可使用
- DOM标准,先加载成dom树结构,再执行,支持增删查改
- ory.w3c.dom:DOM标准包(基础包)
- jDom:对DOM解析进行包装,使程序更好用
- dom4j:在JDom基础上进行改进,实际使用jar
- SAX标准,边加载,边执行,仅支持查询
java中包或类
public static void main(String[] args) {
//解析students.xml
try {
//创建解析器
SAXReader reader = new SAXReader();
//通过read()方法将students.xml解析成Document对象
Document document = reader.read("students.xml");
//获取文档中的根元素
Element rootElement = document.getRootElement();
//获取根元素下的子元素
List<Element> elements = rootElement.elements();
for (Element element : elements) {
//获取元素的属性值
String id = element.attributeValue("id");
//Element element2 = element.element("name");
//String name = element2.getText();
//获取元素的文本值
String name = element.elementText("name");
String age = element.elementText("age");
Student student = new Student(id,name,age);
System.out.println(student);
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Xpath查询
- XPath 是在 XML 文档中查找信息的语言
- XPath通过元素和属性进行查找,简化了Dom4j查找节点的过程,是W3C组织发布的标准。
- 使用XPath必须导入jaxen-1.1-beta-6.jar包
- 具体语法见 XPathTutorial(菜鸟必备)
- 两个重要方法:
- document.selectSingleNode("/students/student[@id=‘1’]")
- document.selectNodes("/students/student")
-基本的XPath语法类似于在一个文件系统中定位文件,如果路径以斜线 / 开始, 那么该路径就表示到一个元素的绝对路径
- 具参见帮助文档