XML
XML简介
什么是XMl
- XML: eXtensible Markup Language(可扩展标记语言)。
- 由W3C组织发布,目前推荐遵守的是W3C组织于2000年发布的XML1.0规范。
- XML是一种标记语言,很类似HTML。
- XML的设计宗旨是传输数据,而非显示数据。
- XML的使命,就是以一个统一的格式,组织有关系的数据。为不同平台下的应用程序服务,独立于软件和硬件的信息传输工具。
- XML仅仅是纯文本。有能力处理纯文本的软件都可以处理XML。不过,能够读懂XML的应用程序可以有针对性地处理XML的标签。
XML 与 HTML
- XML不是HTML的替代。
- XML和HTML为不同的目的而设计:HTML旨在显示信息,而XML旨在传输信息
- 传统中,XML被设计为传输和存储数据,其焦点是数据的内容。
- HTML被设计用来显示数据,其焦点是数据的外观。
- 关于内部标签:
- XML没有任何预定义标签,均为自定义标签。
- HTML文档只使用在HTML标准中定义过的标签。
- 树形结构:
- XML文档形成—种树形结构,这点上与HTML是相同的
- 语法要求:
- XML相较于HTML,语法更加严格。
- HTML不区分大小写,XML严格区分大小写。
XML用途
配置文件
- JavaWeb中的web.xml,以及后面涉及到的框架都会有很多的配置文件
- C3PO中的c3pO-config.xml
- JDK安装后的目录文件
数据交换格式
- Ajax
- WebService
数据存储
- 保存关系型数据
移动端android页面
XML基本语法
CDATA区
- 当XML文档中需要写一些程序代码、SQL语句或其他不希望XML解析器进行解析的内容时,就可以写在CDATA区中
- XML解析器会将CDATA区中的内容原封不动的输出
- CDATA区的定义格式:<![CDATA[...]]>
注释
- XML文件中的注释采用:<!–注释–>
例
创建students.xml
<?xml version="1.0" encoding="utf-8" ?>
<students>
<student id = "001">
<name>zhangsan</name>
<age>20</age>
</student>
<student id = "002">
<name>lisi</name>
<age>18</age>
</student>
<student id = "003">
<name>wangwu</name>
<age>19</age>
</student>
</students>
XML解析
dom4j
- dom4j是一个简单、灵活的开放源代码的库。
- Dom4j是由早期开发JDOM的人分离出来而后独立开发的。与JDOM不同的是,dom4j使用接口和抽象基类,虽然Dom4j的API相对要复杂一些,但它提供了比JDOM更好的灵活性。
- dom4j是一个非常优秀的Java XMLAPI,具有性能优异、功能强大和极易使用的特点。现在很多软件都采用dom4j,例如Hibernate。
- 使用dom4j开发,需导入dom4j相应的jar包dom4j-1.6.1.jar。所以使用第一步:导包!
- Dom4j解析关键步骤
package com.z.demo;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.util.List;
public class ParseXml {
public static void main(String[] args) {
try {
//创建解析器
SAXReader reader = new SAXReader();
//使用解析器read()方法,将xml文件解析成Document对象
Document document = reader.read("wab_xml/students.xml");
//通过文档获取根元素
Element rootElement = document.getRootElement();
//通过根元素获取所有子元素
List<Element> elements = rootElement.elements();
for (Element element:elements) {
String id = element.attributeValue("id");
System.out.println("id = " + id);
String name = element.elementText("name");
System.out.println("name = " + name);
String age = element.elementText("age");
System.out.println("age = " + age);
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
}
XPath
简介
-
XPath是在XML文档中查找信息的语言,类似于jQuery选择器。
-
XPath通过元素和属性进行查找,简化了Dom4j查找节点的过程,是W3C组织发布的标准。
-
使用XPath必须在导入dom4j.jar包之外,再导入jaxen-1.1-beta-6.jar包
-
具体语法:XPath教程(菜鸟教程)
使用
package com.z.demo;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class XPathParseXml {
public static void main(String[] args) {
try {
//创建解析器
SAXReader reader = new SAXReader();
//使用解析器read()方法,将xml文件解析成Document对象
Document document = reader.read("day04_xml/students.xml");
//xpath解析
Element element = (Element)document.selectSingleNode("/students/student[@id = '003']");
String id = element.attributeValue("id");
System.out.println("id = " + id);
String name = element.elementText("name");
System.out.println("name = " + name);
String age = element.elementText("age");
System.out.println("age = " + age);
} catch (DocumentException e) {
e.printStackTrace();
}
}
}