提取XML里的信息有两种方式:
1. 解析 (JAXP Stax:java EE 5的规范之一)
2. 查询 Xquery
接口的意义,接口体现的就是规范
工厂模式:一个工厂,负责制造各种产品
工厂方法:一批工厂,不同的工厂造不同的产品,工厂和产品对应
XML的解析,主要有两种思路:
1. DOM 将XML文档转换成DOM树 所有数据在内存里
2. SAX 和DOM不同,它并不是W3C官方推荐 (效率不好) (通常无法修改节点) 流程式分析,可分析大型的XML文件,常用于Server-side的XML—xhtml转换
3.
SAX解析的思路:SAX解析器相当于一个“探雷工bing”、它是串行化地去解析XML文档
,当它在XML文档遇到“元素开始”“元素结束”...等事件时,SAX解析器就会对外发送事件。
解析器: 负责解析XML文档,并引发事件。有SAX包提供。
监听器:负责监听SAX事件,并通过SAX事件来取得XML文档中的数据
SAXParser和SAXParserFactory:用起来更方便
XMLReader和XMLReaderFactory:用起来繁琐一点
校验时要先启用命名空间的支持:
Dbf.setNamespaceAware(true) ;
JAXP过于复杂
DOM4J和JDOM
JDOM里的API以类为主,DOM4J的API以接口为主
Dom4j可能比Jdom解析速度更快
Dom4j的API规律:
解析XML文档 xxxReader
生成XML文档 xxxWriter
DOM (document Object Model)
DOM模型将XML结构化文档映射为一系列具有父子关系、兄弟关联关系的节点对象集(w3c标准)
SAX (simple API for XML)
采用一种基于事件处理的方式解析XML
JAXP (java API for XML)
目前JAVA领域流行的XML解析器来自Apache组织提供的Xerces项目,这是一个跨语言的XML解析器,目前提供了c++,java,perl等语言版本。
java版本:Xerces-J
xml-apis.jar实际上包含的是JAXP为DOM和SAX提供的一些实现接口
xercesImpl.jar包含Xerces-J实现的jar包,是此项目的核心类库
JAXP的DOM支持:
使用DTD验证XML文档 DEMO
程序可通过SAXParseException异常对象获取XML解析过程中的错误 DEMO
使用DOM解析XML文档 DEMO
DOM创建XML文档 DEMO
DOM修改 DEMO
解析DTD信息 DEMO
JAXP的SAX支持:
使用DTD验证XML文档 DEMO 错误处理DEMO
使用SAX解析XML文档 DEMO
SAX和命名空间 book-ns.xml CrazyNSHandler.java DEMO
使用XML Schema来验证XML文档 DEMO
获取节点的类型信息 DEMO
浏览器对DOM的支持 解析XML DEMO
dom4j 面向接口编程
dom4j常用接口说明
Node dom4j树中所有节点的根接口
Branch 代表能包含子节点的节点,Branch接口下有两个子接口,Element和Document
Element 代表XML元素
Document 代表XML文档根
Attribute 代表XML元素的属性
DocumentType 代表XML文档里的DOCTYPE声明
ProcessingInstruction 代表XML文档的处理指令
CharacterData 所有文本元素的父接口,有CDTATA,Text,和Comment 3个子接口
CDATA 代表XML文档里的CDATA段
Text 代表XML文档里的文本内容
Comment 注释内容
提供了几个Writer
DOMWriter 将dom4j树转换为w3c DOM树
SAXWriter 将dom4j树输出给SAX的ContenHanlder处理
XMLWriter 将dom4j树转换成对应的XML文档,并可输出到指定的输出流
创建新的Document
DocumentFactory
DocumentHelper
dom4j验证XML文档 DEMO
dom4j解析XML文档 DEMO xpp3-1.1.3.3.jar
使用访问者模式遍历XML文档 DEMO
dom4j创建XML文档 DEMO
dom4j修改XML文档 DEMO
dom4j获取命名空间信息 DEMO
JDOM 面向实现类编程
jdom的常用API中只有一个Parent中接口,Parent接口代表所有能包含子内容的节点,有Document和Element两个实现类。
JDOM常用类说明
Document 代表XML文档对象本身,也就是XML文档根
Content 是所有JDOM对象的抽象类
Element 代表XML元素
Text 代表XML文档里的文本内容
CDTATA 代表XML文档CDATA段
DocType 代表XML文档里的DocType声明
ProcessingInstruction 代表XML文档的处理指令
EntityRef 代表XML文档的实体声明
Attribute 代表XML文档的属性
Comment 代表XML文档的注释内容
构建DOM树
DOMBuild 负责将一份已经有的w3c的document对象转换为JDOM的Document
SAXBuiler 广泛使用的工具类,地来自输入流、磁盘或指定URL所代表的XML文档转换为JDOM的Document
输出工具类
DOMOutput 将内存中的JDOM树输出成W3C的DOM树
SAXOutput 将内存中的JDOM树输出到SAX2流中,用于触发SAX2事件监听器
XMLOutputter 将内存中的JDOM树输出成XML文档
JDOM验证XML文档 DEMO
JDOM解析XML文档 DEMO
JDOM创建XML文档 DEMO
JDOM修改XML文档 DEMO
JDOM获取命名空间信息 DEMO