## 二、Java XML 教程
### 1、Java XML 解析器
#### 1.1、什么是XML解析?
解析XML是指将通过XML文档访问数据或修改数据的一个操作或方法。
**Java库中提供了两种XML解析器:**
1、像文档对象模型(Document Object Model,DOM)解析器这的树型解析器(tree parse),它们将读入的XML文档转换成树结构。
2、像XML简单API(Simple API for XML,SAX)解析器这样的流机制解析器(streaming parser),它们在读入XML文档时生成相应的事件。
#### 1.2、XML解析器是什么?
XML解析器提供方法来访问或修改XML文档中的数据。 Java提供了多种选择来解析XML文档。以下是各种类型解析器其通常用于解析XML文档。
**Dom解析器 -** 解析通过加载该文件的全部内容,并创建其完整分级树中存储的文件。
**SAX解析器 -** 解析基于事件触发器的文档。不完整(部分)的文件加载到存储器中。
**JDOM解析器 - **解析以类似的方式,以DOM解析器但更简单的方法的文档。
**StAX解析器 -** 解析以类似的方式,以SAX解析器但在更高效的方式的文档。
**XPath解析器 - **解析基于表达式XML并广泛选择使用XSLT。
**DOM4J解析器 - **Java库来解析XML,XPath和使用Java集合框架XSLT,为DOM,SAX和JAXP的支持。
### 2、Java DOM解析器
#### 2.1、DOM解析器简介
文档对象模型是万维网联盟(W3C)的官方推荐。它定义了一个接口,使程序能够访问和更新样式,结构和XML文档的内容。支持DOM实现该接口的XML解析器。
**何时使用?**
在以下几种情况时,应该使用DOM解析器:
1、需要知道很多关于文档的结构
2、需要将文档的部分周围(例如,可能需要某些元素进行排序)
3、需要使用的文件中的信息超过一次
#### 2.2、Java DOM解析器 - 解析XML文档
**使用DOM的步骤**
以下是在使用DOM解析器解析文档使用的步骤。
1、导入XML相关的软件包。
2、创建DocumentBuilder
3、从文件或流创建一个文档
4、提取根元素
5、检查属性
6、检查子元素
**document对象:**
要操作XML,先就得有Document对象,把一个XML文件加载进内存的时候,在内存中形成所谓的一种树状结构,我们把这一个结构称之为DOM树.
**注意:**
我们在Java代码中所做的增/删/改/查操作,都仅仅是操作的是内存中的Document对象,和磁盘中的XML文件没有关系。比如:删除一个联系人信息之后,XML文件中数据依然存在,此时出现内存中的数据和磁盘文件中的数据不同步。所以,对于增删改操作,我们需要做同步操作(把内存中的数据和磁盘的XML文件数据保持一致)。
DOM:在第一次的时候就会把XML文件加载进内存,如果XML文件过大,可能会造成内存的溢出.
DOM:在做增删改查操作的时候比较简单,,但是性能却不高(线性搜索).
### 3、Java SAX解析器
#### 3.1、Java SAX解析器简介
SAX解析器在解析XML输入数据的各个组成部分时会报告事件,但不会以任何方式存储文档,而是由事件处理器建立相应的数据结构。实际上DOM解析器是在SAX解析器的基础上构建的,它在接收到解析器事件时构建DOM树。
SAX(针对XML的简单API)是基于事件为XML文档的解析器。不像DOM解析器,SAX解析器创建没有解析树。 SAX是一个流接口用于XML的,这意味着使用SAX应用接收事件通知有关XML文档被处理的元素,属性,在按顺序每次开始在文档的顶部,并与所述闭合结束根元素。
1、读取XML文件从上到下,构成一个结构完整的XML文档的标记
2、令牌以相同的顺序进行处理,它们出现在文档中
3、报告应用程序,因为它们所出现解析器遇到标记的特性
4、应用程序提供了必须的解析器注册的“事件”处理程序
5、作为标记标识,在处理程序回调方法相关信息调用
#### 3.2、Java SAX解析器 - 解析XML文档
![image-20210815153319390](images.assets/image-20210815153319390.png)
在使用SAX解析器时,需要一个处理器来为各种解析器事件定义事件动作。DefaultHandler接口定义了若干个在解析文档时解析器会调用的回调方法。下面是最重要的几个方法:
1、startElement和endElement在每当遇到起始或终止标签时调用。
2、characters在每当遇到字符数据时调用。
3、startDocument和endDocument分别在文档开始和结束时各调用一次。
### 4、Java StAX解析器
#### 4.1、Java StAX解析器简介
StAX即Streaming API for XML,当前最有效的XML处理方法,因此特别适合于处理复杂流程,比如数据库绑定和SOAP消息。StAX创建的信息集是非常小,可以直接作为垃圾收集的候选对象。这让XML处理任务占用较小的空间,使得它不仅适用于小型堆设备,比如移动电话,而且适用于长期运行的服务器端应用程序。
与SAX不同,StAX能够对XML文档进行写操作,这减少了需要处理的API数量。
StAX提供两种不同的解析数据模型:光标模型和迭代器模型。
**环境设置**
为了使用StAX的解析器,应该准备好stax.jar在应用程序的类路径中。下载 stax-1.2.0.jar,以下是StAX API的功能:
1、读取XML文件从上到下,认识构成一个结构完整的XML文档的标记
2、令牌是以相同的顺序进行处理,它们出现在文档中
3、报告应用程序,因为解析器遇到标记的特性
4、应用程序提供了一个“事件”读取器充当了事件,以获得所需信息的迭代器和迭代。可另一个读取器是“光标”充当一个指向XML 节点。
5、由于事件被识别,XML元素可以从事件对象进行检索,并且可以进一步处理。
### 6、Java DOM4J解析器
#### 6.1、Java DOM4J解析器解析
DOM4J是一个开源的,基于Java的库来解析XML文档,它具有高度的灵活性,高性能和内存效率的API。这是java的优化,使用Java集合像列表和数组。它可以使用DOM,SAX,XPath和XSLT。它解析大型XML文档时具有极低的内存占用。
**环境设置**
为了使用DOM4J解析器,应该 dom4j-1.6.1.jar 和 jaxen.jar 在应用程序的类路径中。下载 dom4j-1.6.1.zip.
**什么情况下使用?**
应该考虑使用DOM4J解析器的时候:
1、需要知道很多关于文档的结构
2、需要将文档的部分围绕(例如,可能需要某些元素进行排序)
3、需要使用的文件中的信息超过一次
4、你是一个Java开发人员,并希望利用XML的Java的优化解析。
一、设计模式的分类
总体来说设计模式分为三大类:
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
其实还有两类:并发型模式和线程池模式
二、设计模式的六大原则
1、开闭原则(Open Close Principle)
开闭原则就是说对扩展开放,对修改关闭。
2、里氏代换原则(Liskov Substitution Principle)
里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。
3、依赖倒转原则(Dependence Inversion Principle)
这个是开闭原则的基础,具体内容:针对接口编程,依赖于抽象而不依赖于具体
4、接口隔离原则(Interface Segregation Principle)
这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。
5、迪米特法则(最少知道原则)(Demeter Principle)
为什么叫最少知道原则,就是说:一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。
6、合成复用原则(Composite Reuse Principle)
原则是尽量使用合成/聚合的方式,而不是使用继承
三、Java的23中设计模式
1、工厂方法模式(Factory Method)
工厂方法模式分为三种:
11、普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。
22、多个工厂方法模式,是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象
33、静态工厂方法模式,将上面的多个工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧