Java中的XML编程 (2).ppt

上传人:牧羊曲112 文档编号:6509626 上传时间:2023-11-07 格式:PPT 页数:25 大小:227.49KB
返回 下载 相关 举报
Java中的XML编程 (2).ppt_第1页
第1页 / 共25页
Java中的XML编程 (2).ppt_第2页
第2页 / 共25页
Java中的XML编程 (2).ppt_第3页
第3页 / 共25页
Java中的XML编程 (2).ppt_第4页
第4页 / 共25页
Java中的XML编程 (2).ppt_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《Java中的XML编程 (2).ppt》由会员分享,可在线阅读,更多相关《Java中的XML编程 (2).ppt(25页珍藏版)》请在三一办公上搜索。

1、第9章 Java中的XML编程,9.1 使用DOM解析XML,解析器工厂类DocumentBuilderFactory DocumentBuilderFactory类是DOM中的解析器工厂类,开发这要使用DOM操作XML首先必须需要建立一个解析器工厂实例,以便利用这个工厂类实例来获得一个具体的解析器对象。示例代码如下:DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();,9.1 使用DOM解析XML,解析器类DocumentBuilder DocumentBuilder类是DOM中的解析器类,开发者可以使其从XML文档

2、获取DOM文档实例。当获得一个解析器工厂类对象后,使用它的静态方法newDocumentBuilder()将可以获得一个DOM解析器对象,示例代码如下:DocumentBuilder db=dbf.newDocumentBuilder();,文档树模型Document,Document对象代表了一个XML文档的树模型。所有其它的Node,都以一定的顺序包含在Document对象之内,排列成一个树形的结构。解析器类DocumentBuilder的parse()方法接受一个XML文档名作为输入参数,将返回一个Document实例 示例代码:Document doc=db.parse(message

3、.xml);,此外还可以把要解析的XML文档转化为输入流,然后将输入流对象作为parse()方法的输入参数,以便DOM解析器解析它,示例代码如下:InputStream is=new FileInputStream(message.xm);Document doc=db.parse(is);使用Document对象的getElementsByTagName()方法,可以得到一个NodeList对象,一个Node对象代表了一个XML文档中的一个标签元素,而NodeList对象所代表的是一个Node对象的列表。NodeList nl=doc.getElementsByTagName(message

4、);,主要的方法有:createAttribute(String):用给定的属性名创建一个Attr对象,并可在其后使用setAttributeNode方法来放置在某一个Element对象上面。createElement(String):用给定的标签名创建一个Element对象,代表XML文档中的一个标签,然后就可以在这个Element对象上添加属性或进行其它的操作。createTextNode(String):用给定的字符串创建一个Text对象,Text对象代表了标签或者属性中所包含的纯文本字符串。如果在一个标签内没有其它的标签,那么标签内的文本所代表的Text对象是这个Element对象的唯

5、一子对象。getElementsByTagName(String):返回一个NodeList对象,它包含了所有给定标签名字的标签。getDocumentElement():返回一个代表这个DOM树的根节点的Element对象,也就是代表XML文档根元素的那个对象。,节点列表类NodeList,节点列表类NodeList就是代表了一个包含一个或者多个Node的列表。可以简单的把它看成一个Node的数组,可以通过下列方法来获得列表中的元素:GetLength():返回列表的长度。Item(int):返回指定位置的Node对象。可以使用NodeList对象的item()方法来得到列表中的每一个Nod

6、e对象,节点类Node,Node对象代表了文档树中的一个抽象的节点。Node对象所包含的主要的方法有:appendChild(org.w3c.dom.Node):添加一个子节点,并放在所有子节点的最后,如果这个子节点已经存在,则先把它删掉再添加进去。getFirstChild():如果节点存在子节点,则返回第一个子节点,getLastChild()方法返回最后一个子节点。getNextSibling():返回在DOM树中这个节点的下一个兄弟节点,getPreviousSibling()方法返回其前一个兄弟节点。getNodeName():根据节点的类型返回节点的名称。getNodeType()

7、:返回节点的类型。getNodeValue():返回节点的值。,节点类Node,hasChildNodes():判断是不是存在有子节点。hasAttributes():判断这个节点是否存在有属性。getOwnerDocument():返回节点所处的Document对象。insertBefore(org.w3c.dom.Node new,org.w3c.dom.Node ref):在给定的一个子对象前再插入一个子对象。removeChild(org.w3c.dom.Node):删除给定的子节点对象。replaceChild(org.w3c.dom.Node new,org.w3c.dom.Nod

8、e old):用一个新的Node对象代替给定的子节点对象。要提取message标签内的内容,通常会使用Node对象的getNodeValue()方法:,元素类Element,Element对象所包含的主要的方法有:getElementsByTagName(String):返回一个NodeList对象,它包含了在这个标签中其下的子孙节点中具有给定标签名字的标签。getTagName():返回一个代表这个标签名字的字符串。getAttribute(String):返回标签中给定属性名称的属性的值。在这儿需要主要的是,应为XML文档中允许有实体属性出现,而这个方法对这些实体属性并不适用。这时候需要用

9、到getAttributeNodes()方法来得到一个Attr对象来进行进一步的操作。getAttributeNode(String):返回一个代表给定属性名称的Attr对象。,属性类Attr,Attr对象代表了某个标签中的属性。Attr继承于Node,但是因为Attr实际上是包含在Element中的,它并不能被看作是Element的子对象,因而在DOM中Attr并不是DOM树的一部分Attr其实是被看作包含它的Element对象的一部分,它并不作为DOM树中单独的一个节点出现。这一点在使用的时候要同其它的Node子对象相区别。,解析器工厂类DocumentBuilderFactory,解析器

10、类DocumentBuilder,文档对象Document,元素Element,属性Attr,节点Node,节点集NodeList,9.2 使用SAX解析XML,SAX是事件驱动的,SAX解析的方式非常类似流媒体的分析处理方式,这种解析模式能够随着文档的读入过程立即开始解析,而不需要等待文档中所有的数据被读入结束后再开始解析。适合于内存较小的应用场合。除此之外,应用程序甚至不必解析整个文档,它可以在某个条件得到满足时停止解析后面的文档。SAX解析XML文档的基本原理为:首先获得一个实现SAX接口的解析器,然后编写一个符合SAX标准的处理器类,并且把这个类注册到刚生成的解析器,然后开始解析XML

11、文件,解析器会把XML文档作为一个流读出来,并将文件流转换成一个事件流,最后根据事件调用定义在解析器里的事件处理方法对流中的事件做出响应。,SAX的事件驱动模型,五种事件,startDocument:表明SAX解析器发现了文档的开始 public void startDocument()endDocument:表明SAX解析器已经发现了xml文档的结尾 public void endDocument()startElement:SAX解析器发现了xml文件中的一个元素的开始标签,同时返回该元素的名称以及元素属性的名称 public void startElement(String namesp

12、ace,string localname,String qName,Attribute atts),元素的非限定名,元素的限定名,有命名空间前缀,元素所有属性,五种事件,endElement:表明SAX解析器发现了xml文档中一个元素的结束标签,返回元素的名称和相关的命名空间 public void endElement(String namespace,String localName,String qName)Character:表明SAX解析器发现了xml文档中的一个元素的文本信息,返回一个字符串数组、数组的偏移量和一个长度变量,通过这些访问到所发现的文本信息。public void c

13、haracter(char ch,int start,int length),Java SAX的API,SAXParserFactory:一个根据系统属性生成parser实例的解析器工厂类。其功能与DOM中的DocumentBuilderFactory类相同。SAXParser:一个定义了不同种类的parser()方法的接口。SAXParser是一个与SAX事件通讯的处理器,可以使用自定义的handler来处理事件。SAXReader:SAXParser中包含了一个SAXReader,当要使用SAXReader的getXMLReader()方法的时候就需要配置它。DefaultHandler:

14、类DefaultHandler实现了ContentHandler、ErrorHandler、DTDHandler和EntityResolver接口,通过继承这个类,我们可以实现解析XML文档的所有任务。,Java SAX的API,ContentHandler:当遇到XML文档中的标签时,就将会调用这个接口中的startDocument、endDocument、startElement和 endElement 方法。当遇到XML文档中的元素内容时,将调用characters方法。ErrorHandler:当遇到不同类型的错误的时候分别调用相应的错误方法,这些方法包括:error、fatalErr

15、or和warning等。DTDHandler:该接口所定义的方法只用在处理DTD信息的时候。EntityResolver:该接口中的resolveEntity方法只在遇到URI标识数据的时候才调用。,9.3 使用JDOM解析XML,JDOM是一个开源项目,它基于树型结构,利用纯Java的技术对XML文档实现解析、生成、序列化以及多种操作。JDOM直接为Java编程服务。它利用更为强有力的Java语言的诸多特性(方法重载、集合概念以及映射),把SAX和DOM的功能有效地结合起来。JDOM中的类主要包括SAXBuilder、DOMBuilder、Document、XMLOutputter、Elem

16、ent和Attribute等,JDOM的API,SAXBuilder类 JDOM中的SAXBuilder类会使用SAX来建立一个JDOM的解析树。它可以通过build()方法由指定的输入数据流建立一个文件,返回一个Document对象。DOMBuilder类 JDOM中的DOMBuilder类会使用DOM来建立一个JDOM的解析树。它可以通过build()方法由指定的输入数据流建立一个文件,返回一个Document对象。Document类 Document类的一个实例用来描述一个XML文档。这个文档类是轻量级的,它可以包括文档类型、处理指令对象、根元素和注释对象等内容。,JDOM的API,构造

17、一个包含根元素的Document对象 Element root=new Element(“books”);Document doc=new Document(root);root.setText(“书”);XMLOutPutter类 将XML文档写入一个特定的OutputStream流中。其中output()方法用于将XML文档输出到指定的位置,既可以是标准的输出System.out,也可以是File对象或者OutputStream对象。XMLOUTPutter outp=new XMLOUTPutter();outp.output(doc,System.out);,JDOM的API,Elem

18、ent类 在JDOM中,XML元素就是Element类的实例。Element类有两种主要的操作,一个是浏览元素树,另一个是移动元素。获得根元素Element root=doc.getRootElement();获得根元素的所有子元素的一个列表List allChildren=root.getChildren();通过名字获得指定的子元素列表List namedChildren=root.getChildren(name);根据指定名称得到第一个元素Element child=root.getChild(name);,JDOM的API 2-2,List allChildren=root.getC

19、hildren();/删除第四个元素allChildren.remove(3);/删除所有名称是jack的子元素allChildren.removeALL(root.getChildren(jack);/在集合末尾添加新元素allChildren.add(new Element(tom);/在集合开头添加新元素allChildren.add(0,new Element(sun);Attribute类 可以使用Element类的getAttribute()方法来取得一个元素的属性,该方法会返回一个Attribute对象。Attribute类提供了getValue()方法,它将会以字符串的形式返回一个属性值。,开发前准备:1、在安装包 2、将安装包中的jdom.jar文件添加到eclipse库中举例,9.4 本章小结,本章主要介绍了Java XML程序设计的基础知识,详细讲解了DOM编程、SAX编程和JDOM编程的基本流程和常用方法,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号