a)  使用DOM解析XML文档
Document中提供如下用来访问XML文档中的节点的方法:
Element getDocumentElement():其是用来获取XML文档的根节点;
Element getElementByld(String tagname):其是用来根据XML元素的ID来获取XML元素。
NodeList getElementByTagName(String tagname):其是用来根据XMl标签名获取XML元素。
使用DOM创建XML文档可以先在内存中创建新的DOM树,并未DOM树添加节点,然后将DOM树转换成XML文档即可。Document也提供了很多常用方法来创建节点,如Attr createAttribute(String name),这里就不一一列举。
b)  使用DOM修改XML文档
使用DOM可以修改XML文档,这个操作就比较简单了,首先使用DOM解析器解析已有的XML文档,利用DOM树节点之间的结构关系找到待修改的节点,然后调用各节点对象的方法修改该节点所包含的数据,最后使用LSSerializer再次序列化修改后的DOM树即可完成XML文档的修改。

2.1.2  基于SAX解析
SAX采用事件机制方式来解析XML文档,一种快速读写XML数据的方式。SAX解析器解析XML文档时,会触发一系列事件,这些事件被监听器监听后会触发相应的处理方法,从而实现对XML文档的访问,如图4.2所示。
  2.2   SAX解析图解
在SAX解析器着手解析时就开始发送事件,当SAX解析器着手处理文档开始、元素开始和文本时,就会在文档中触发一个事件,那么监听器就开始负责处理这些事件,事件中包含XML元素的内容,即元素值和属性,从而实现对XML文档信息的读取。
a)  使用DOM解析XML文档
SAX解析器不创建任何对象,它只在遇到XML文档的各种标签时触发相对应的事件,而且将XML文档的元素内容封装成事件传出去。使用XMLReader和XMLReaderFactory这组API来解析XML文档的话,可以先通过调用XMLReaderFactory的createXMLReader()方法来建立一个XMLReader对象,如果希望启动SAX解析器的原生特性,可多次调用XMLReader对象的setFeature()方法。然后分别调用XMLReader的setContentHandler、setDTDHandler、setEntityResolver和setErrorHandler方法来绑定多个事件监听函数。最后调用XMLReader的parse()方法来解析XML文档。
    使用XML解析器解析XML文档时,同样可以使用DTD来验证XML文档的有效性。通过以上的介绍,使用SAX解析XML文档也很容易实现。使用SAXParser和SAXParserFactory这组API来解析XML文档的话,可以先通过SAXParserFactory的newInstance()方法创建SAX解析器工厂对象,再调用SAXParserFactory对象的newSAXParser()方法创建SAXparser对象,最后调用SAXParser对象的parser()方法解析XML文档即可,不过调用该方法时需要传入一个DefaultHandler对象。
2.1.3  基于JDOM解析
    JDOM也是Java中常用的解析XML文档的方法,他整合了DOM解析的简单易行和SAX解析的性能优越两大特点。
使用JDOM解析XML文档,首先其将XML文档转换成一个Document对象,相当于XML文档的根节点,获得该节点所用到的类为SAXBuilder,然后可以利用已得到的Document节点的getRootElement()方法,得到根元素,其提供了getChildren()方法可以获得子节点。但是不能使用getRootElement()方法获得属性。所以要获得属性,要使用的方法是getAttribute(String attributeName),可以通过getAttributeValue(String attributeName)获得该属性的值。使用JDOM也可以创建XML文档,删除并修改节点。
a)  解析XML文档
 
这点和DOM不同。Dom则需要更为复杂的代码,如下:
 
JDOM不允许同一个节点被两个或多个文档同时相关联,如果要在第二个文档中使用原来老文档中的节点的话,那么首先需要使用detach()把这个节点给分开来。
上一篇:基于Java的教学信息管理系统设计
下一篇:聚类分析算法研究k-means算法

银行行办公信息服务系统【1544字】

远程访问服务【1388字】

论利用ebXML和SOAP开发Web服务【2352字】

架设Linux(2.6内核)的服务器集群【745字】

Web技术的网络考试系统【2240字】

ASP技术开发Web数据库检索程序【1514字】

ASP.NET的Web网络應用程序开...

AT89C52单片机的超声波测距...

10万元能开儿童乐园吗,我...

神经外科重症监护病房患...

C#学校科研管理系统的设计

国内外图像分割技术研究现状

公寓空调设计任务书

承德市事业单位档案管理...

中国学术生态细节考察《...

志愿者活动的调查问卷表

医院财务风险因素分析及管理措施【2367字】