【XML的概述】
什么是XML:
可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。
在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。早在1998年,W3C就发布了XML1.0规范,使用它来简化Internet的文档信息传输。
**** 允许用户自定义标签的!!!
XML的作用:
* 传输 和 存取数据.
* 软件的配置文件.
XML的使用:
* XML的语法.
【XML的语法】
XML的基本语法:
* XML必须有关闭标签
* 区分大小写
* 属性需要有引号
* 标签必须正确嵌套.
XML的文档声明
* 文档声明:通常出现在XML的第一行第一列的位置!!!
* 写法:
*<?xml 属性名=”属性值” 属性名=”属性值” ...?>
*version :必须的. 使用”1.0”
*encoding :字符集. 是使用浏览器打开的时候采用的默认的字符集的编码.
*standalone :描述XML文档是否需要依赖其他的文件.
XML的注释
* <!-- XML的注释 -->
XML的元素
* 元素(标签)的命名规范:
XML的属性
* 属性的名称规范与元素一致.
***** 属性需要使用引号!
XML的特殊字符和CDATA区
* XML的特殊字符:
* XML的CDATA区:(CDATA:Character Data)
* <![CDATA[ 内容 ]]>
【XML的解析】
XML的解析:从XML文档中获得想要的数据(通过代码完成的.)
XML的解析的方式(*****):
* DOM解析:DOM:DocumentObject Model.
* SAX解析:SimpleApi for XML.
* DOM和SAX的区别:
针对这两种解析的方式,不同的公司提供了不同的API的实现.
* JAXP :SUN公司提供的一套XML的解析的API.
* JDOM :开源组织提供了一套XML的解析的API-jdom.
* DOM4J :开源组织提供了一套XML的解析的API-dom4j.
* pull :主要应用在Android手机端解析XML.
DOM4J的入门案例步骤:
* 【步骤一】导入jar包.dom4j-1.6.1.jar
* 【步骤二】创建解析器 SaxReader
* 【步骤三】解析文档获得代表文档的Document对象. —— SAXReader的read()方法获取Document。
* 【步骤四】获得跟节点.——通过Document对象的getRootElement()得到根节点
* 【步骤五】从跟节点下查找其他的节点. 使用根节点获取他下面的节点element() elements(“标签名称”)
* 代码实现:
@Test
/**
* 获得元素的内容:查询的操作.
*/
publicvoid demo1() throws Exception{
// 创建解析器
SAXReaderreader = new SAXReader();
// 解析XML的文档
Documentdocument = reader.read("xml/demo1.xml");
// 获得跟节点
Elementroot = document.getRootElement();
System.out.println(root.getName());
// 查找跟节点下的子节点. element() elements();
ElementpElement = root.element("person"); // 查找的是第一个person元素
//root.elements("person").get(1); // 查找的是第二个person元素
ElementnElement = pElement.element("name");
ElementaElement = pElement.element("age");
ElementsElement = pElement.element("sex");
System.out.println(nElement.getText());
System.out.println(aElement.getText());
System.out.println(sElement.getText());
}
XPath:
* dom4j支持XPath的jar包.
*jaxen-1.1-beta-6.jar
* dom4j的XPath支持的API:
* Listdocument.selectNodes(String xPath);
* Nodedocument.selectSingleNode(String xPath);
* 代码实现:
@Test
/**
* DOM4J的XPath的写法:
*/
publicvoid demo2() throws Exception{
// 创建解析器:
SAXReaderreader = new SAXReader();
// 解析XML返回Document对象.
Documentdocument = reader.read("xml/demo1.xml");
/*List<Node>list = document.selectNodes("//name");
for(Node node : list) {
Elementelement = (Element) node;
System.out.println(element.getText());
}*/
List<Node>list = document.selectNodes("//person['@id']");
for(Node node : list) {
Elementelement = (Element) node;
System.out.println(element.attributeValue("id"));
}
}