1、操作xml文件的方式
Java操作XML文件一共有四种方式:JDOM,DOM,SAX,DOM4J
本文主要介绍精准化使用的一种方式:JDOM
JDOM是两位著名的 Java 开发人员兼作者,Brett Mclaughlin 和 Jason Hunter 的创作成果, 2000 年初在类似于Apache协议的许可下,JDOM作为一个开放源代码项目正式开始研发了。经过多年的发展,目前用于 XML语法分析的 Java API,主要包含以下三个软件包:
1)·org.w3c.dom ,W3C 推荐的用于 XML 标准规划文档对象模型的 Java 工具
2)·org.xml.sax,用于对 XML 进行语法分析的事件驱动的简单 API
3)·javax.xml.parsers ,工厂化工具,允许应用程序开发人员获得并配置特殊的语法分析器工具 JDOM 能够替换org.w3c.dom软件包来有计划地操作 XML 文档。
JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。
JDOM的最新版本为JDOM Beta 9。最近JDOM被收录到JSR-102内,这标志着JDOM成为了JAVA平台组成的一部分。
在 JDOM 中,XML 元素就是 Element 的实例,XML 属性就是 Attribute 的实例,XML 文档本身就是 Document 的实例。
因为 JDOM 对象就是像Document、Element 和 Attribute 这些类的直接实例,因此创建一个新 JDOM 对象就如在 Java 语言中使用 new 操作符一样容易。JDOM 的使用是直截了当的。
2、JDOM2和SAXParserFactory解析XML文件
2.1 JDOM2
1)JDOM2主要包有:
org.jdom2包含了所有的xml文档要素的java类
org.jdom2.adapters包含了与dom适配的java类
org.jdom2.filter包含了xml文档的过滤器类
org.jdom2.input包含了读取xml文档的类
org.jdom2.output包含了写入xml文档的类
org.jdom2.transform包含了将jdomxml文档接口转换为其他xml文档接口
org.jdom2.xpath包含了对xml文档xpath操作的类
2)主要用到的org.jdom2相关API介绍:
org.jdom2.Document
org.jdom2.Element
org.jdom2.Attribute
org.jdom2.input.sax.SAXHandler
其他JDOM2详情,可以官网查看:http://www.jdom.org/docs/apidocs/index.html
2.2 SAXParserFactory
1)javax.xml.parsers
javax.xml.parsers ,工厂化工具,允许应用程序开发人员获得并配置特殊的语法分析器工具 JDOM 能够替换org.w3c.dom软件包来有计划地操作 XML 文档。
用到的主要API:
SAXParserFactory
解析工厂
SAXParser
解析器
SAXHandler
JDOM处理,获取JDOM信息
其他javax.xml.parsers详情:https://docs.oracle.com/javase/8/docs/api/index.html?javax/xml/parsers/package-summary.html
下面就拿对mapper文件的解析作为实例,简单介绍下。
3、mapper文件解析
在java世界里,对于数据库的操作,都放在mapper文件里(一堆的xml文件),在精准化对比代码差异时,对于mapper文件,这里用到了上面说的xml文件解析技术。
1)我们需要获得解析工厂 SAXParserFactory
SAXParserFactory spf = SAXParserFactory.newInstance();
2)工厂获取解析器SAXParser
SAXParser sp = spf.newSAXParser();
3)获取JDOM处理器
SAXHandler hand = new SAXHandlerExt();
4)解析xml文件
sp.parse(#{mapper-xml文件}, hand);
5)获取解析后符合JDOM树结构类实例的文件(像Document、Element 和 Attribute 这些类)
Document doc = hand.getDocument();
到这里我们就获得了该xml文件的详细信息,直接通过JDOM相关API以及对象属性获取需要的信息即可。
对于mapper文件内的元素分析,可以参考mybatis的sql语句映射规则。这里mapper文件都是一系列的sql操作映射文件,是mybatis框架中十分重要的文件,可以说,mybatis框架的强大之处就体现在映射文件的编写上。mapper.xml映射文件主要是用来编写sql语句的,以及一些结果集的映射关系的编写等等。
在分析这些mapper文件时,可以先按以下基本的Element进行分析。
映射的一些说明,可以参考:
http://c.biancheng.net/mybatis/mapper.html
综上:通过分析得出的数据,进行对比分析得到mapper文件差异进而得到相应的方法。