一、什么是XML
Xml的全称为Extensiable Markup Language,意思是可扩展的标记语言。XMl的语法上和HTML比较相似,但是html标签都是规定好了的,而XML是可以随意定义标签的。
二、XML的常见用法
用法一:存放配置文件
用法二:存储数据
很多应用程序会使用xml个来存放数据,比如我们用过的powerdesiner。
用法三:传输数据
我们知道使用不同语言开发程序之间是不能够直接交流的,我们需要介入一种约定的协议来完成不同系统之间的交互。一直比较主流的就是通过发布webservice的方式来暴露自己的本系统的功能。外部程序可以使用别的程序暴露的webservice来访问。那么webservice使用的是soap协议,相互之间传递的数据就是XML格式的文档数据。
三、XML的语法
①头部声明XML文档(必须的)
<?xml version="1.0" encoding="UTF-8" language=”java”?>
文档必须以<?xml ... ?>开始,并且必须放到文档的开头。不允许出现任何其他的干扰字符。文档声明部分只有三个属性:version,encoding,language,注意其中version是必须的。
四、Dom4J解析XMl文档
XML的文档结构理解
XML可以从根节点开始,一层一层的抓出一颗树形的节点结构。我们称之为DOM树。
简介
当数据被存在xml文件后,如果我们想要用到里面的数据需要通过程序获取文件内容,解析出我们想要的数据,如果使用我们目前所学习的知识,我们只能使用IO流来完成读取文件,然后通过一些复杂的判断来获取文档里面的数据。这样的常用的文档格式,一定会有一些懒人来封装一些方便的工具。那么针对XML文档我们有DOM4J,sax这个工具包来帮助我们从复杂的XML文档解析中解脱出来。
Dom解析器方式
我们介绍两种dom解析器,dom4j 解析器和SAX解析器。
Dom4j会把所有文档一次性的读取到内存里,形成一个完整的DOCUMENT对象。
优点:元素之间有结构关系,可以进行节点的增删改查。
缺点:文档过大时候内存容易溢出。
SAX:一边读一边解析,逐行扫描文档,读一行解析一行,并以事件驱动的方式进行解析,这种方式速度快,但是只能对文档进行读取,不能修改节点信息。
常用API
//定义一个SAXReader 用于将文档读取到内存中
SAXReader saxReader = new SAXReader();
//读取XMl文档组装成文档Document
Document doc = saxReader.read(is);
//获取根节点
Element rootElement = doc.getRootElement();
//获取节点的标签名(tagname)
String typeName = rootElement.getName();
//获取当前节点的所有子节点
List<Element> list = rootElement.elements();
//根据标签名获取一个子节点
Element defaultConfigEle = rootElement.element("default-config");
//读取属性
String propertyName = ele.attributeValue("name");
//读取节点文本内容
String propertyValue = ele.getText();
//另一种方式读取节点内容
String targetEleText = defaultConfigEle.elementText("tebiede");
Xml除了存储数据配置文件以外还经常被我们用来存javabean和数据字段之间的关系,当查询数据库时候我们可以根据xml文档来将查询到的结果节方便的翻译成java对象。
将我们的select查询来用xml文档来简化字段对应。