文档详情

第4章 Java处理XML.ppt

发布:2017-09-29约3.6万字共81页下载文档
文本预览下载声明
DOM将文档中的所有都看作节点,因此定义了一个最基础的接口是Node,它的字接口包括Element,Attr,Text等等,还包括了 Document,也就是说DOM将整个文档看作是一个节点。 在Node中定义了很多方法, 包括了读取节点(getFirstChild(), getNextSibling(), getLastNode(), getChildNodes(), getNodeName(), getNodeType(), getNodeValue(), getParentNode(), getAttributes(), getOwnerDocuemt())、 修改节点(insertBefore(), removeChild(), appendChild(), replaceChild(), setNodeValue()),这些方法都非常常用,但是没有定义创建节点的方法, 创建节点的方法是在它的子接口Document中定义的 (createXXX()),也没有定义按节点名字来得到节点的方法,这些方法是在Element和Document中定义的 (getElementById(), getElementByTagName(), 注意在这里按照名字直接得到的是Element) 优缺点 DOM在解析文档的时候按整个文档的结构生成一棵树,全部保存在内存中,这既产生了一些优点,也产生了一些缺点。优点就是整个文档都一直在内存中,我们可 以随时访问任何节点,并且对树的遍历也是比较熟悉的操作;缺点则是耗内存,并且必须等到所有的文档都读入内存才能进行处理。 一个需要注意的地方就是,XML文档两个标签之间的空白也是这棵树的一个节点(Text节点) DOM类的介绍 DocumentBuilder类 NamedNodeMap接口 NamedNodeMap接口主要方法 实现步骤: 1、创建Document 创建一个文档的过程是非常固定的,三步走 2、浏览XML文档的内容 获得Document后的第一步就是获得root element,也叫document element :getDocumentElement() 3、修改XML文档 修改包含两方面的内容,一方面是修改已有的,另一方面是创建新的节点加入到文档中去.修改已有的节点值,找到目标节点,然后调用Node.setNodeValue()就可以了,对Attr来说则是调用setValue();而修改已有的节点,则用replaceChild();删除一个节点用removeChild()。 创 建新节点时,是用Document来创建的。创建好后就可以使用append()或insertBefore()来插入到合适的地方。此外 Attr总是比较特殊,为一个元素添加属性需要用setAttribute()方法,而删除属性则要用removeAttribute()方法。 4、返回值NodeList和NamedNodeMap 5、输出XML文档 例子1: NodeList和Node示例 NodeList和Node示例 使用递归解析DOM树 建立和更新XML文档2 使用XmlDocument类更新文档 使用TransformerFactory类和Transformer类更新文档 从因特网上获取天气数据示例 SAX的原理 SAX的工作原理简单地说就是对文档进行顺序扫描,当扫描到文档(document)开始与结束、元素(element)开始与结束、文档(document)结束等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。 SAX的优缺点 SAX的常用接口介绍 DTDHandler接口 EntityResolver接口 ErrorHandler接口 SAX的其他类和接口介绍 DefaultHandler类 DefaultHandler类是SAX2事件处理程序的默认基类。它继承了EntityResolver、DTDHandler、ContentHandler和ErrorHandler这四个接口。包含这四个接口的所有方法,所以我们在编写事件处理程序时,可以不用直接实现这四个接口,而继承该类,然后重写我们需要的方法。如下: XMLReader接口 XMLReader接口是使用回调读取XML文档的接口。XMLReader是XML解析器的SAX2驱动程序必须实现的接口。此接口允许应用程序设置和查询解析器中的功能和属性,注册文档的事件处理程序,以及对文档的解析。如下: Attributes接口 SAX的应用2 对复杂XML文档的解析 作业1: 1.有一个名为sql_conn.xml文件,里面有以下内容: sqlconn
显示全部
相似文档