首页 存档 技术 查看内容

Java程序员从笨鸟到菜鸟之(二十六)XML之DOM和SAX解析

2018-3-30 13:00 |来自: 互联网 787 0

摘要: 【新朋友】点击标题下面(↑)蓝色字“Java那些事”关注 【老朋友】点击右上角,转发或分享本页面内容 这是我以前写的《java程序员由笨鸟到菜鸟》系列博客,每周更新三篇。下面是系里博客的第二十六篇XML之DOM和SAX ...

【新朋友】点击标题下面(↑)蓝色字“Java那些事”关注

【老朋友】点击右上角,转发或分享本页面内容

这是我以前写的《java程序员由笨鸟到菜鸟》系列博客,每周更新三篇。下面是系里博客的第二十六篇XML之DOM和SAX解析

DOM解析

在DOM接口规范中,有四个基本的接口:Document,Node,NodeList以及NamedNodeMap。在这四个基本接口中,Document接口是对文档进行操作的入口,它是从Node接口继承过来的。Node接口是其他大多数接口的父类,象Document,Element,Attribute,Text,Comment等接口都是从Node接口继承过来的。NodeList接口是一个节点的集合,它包含了某个节点中的所有子节点。NamedNodeMap接口也是一个节点的集合,通过该接口,可以建立节点名和节点之间的一一映射关系,从而利用节点名可以直接访问特定的节点。

1.Document

Document接口代表了整个XML/HTML文档,因此,它是整棵文档树的根,提供了对文档中的数据进行访问和操作的入口。

2.NodeList

NodeList接口提供了对节点集合的抽象定义,它并不包含如何实现这个节点集的定义。NodeList用于表示有顺序关系的一组节点,比如某个节点的子节点序列。另外,它还出现在一些方法的返回值中,例如getElementsByTagName。

在DOM中,NodeList的对象是"live"的,换句话说,对文档的改变,会直接反映到相关的NodeList对象中。例如,如果通过DOM获得一个NodeList对象,该对象中包含了某个Element节点的所有子节点的集合,那么,当再通过DOM对Element节点进行操作(添加、删除、改动节点中的子节点)时,这些改变将会自动地反映到NodeList对象中,而不需DOM应用程序再做其他额外的操作。

NodeList中的每个item都可以通过一个索引来访问,该索引值从0开始。

3.NamedNodeMap

实现了NamedNodeMap接口的对象中包含了可以通过名字来访问的一组节点的集合。不过注意,NamedNodeMap并不是从NodeList继承过来的,它所包含的节点集中的节点是无序的。尽管这些节点也可以通过索引来进行访问,但这只是提供了枚举NamedNodeMap中所包含节点的一种简单方法,并不表明在DOM规范中为NamedNodeMap中的节点规定了一种排列顺序。

NamedNodeMap表示的是一组节点和其唯一名字的一一对应关系,这个接口主要用在属性节点的表示上。 与NodeList相同,在DOM中,NamedNodeMap对象也是"live"的。

4.Dom对象

一切都是节点(对象)

.Node对象:DOM结构中最为基本的对象

Document对象:代表整个XML的文档

NodeList对象:包含一个或者多个Node的列表

Element对象:代表XML文档中的标签元素

5.dom解析xml步骤

[java] view plaincopyprint?

  1. import javax.xml.parsers.*;

  2. import org.w3c.dom.*;

  3. public class dom {

  4. public static void main(String args[]){

  5. try{

  6. //建立解析器工厂

  7. DocumentBuilde**ctory factory = DocumentBuilde**ctory.newInstance();

  8. //获得解析器

  9. DocumentBuilder builder=factory.newDocumentBuilder();

  10. Document doc=builder.parse("candidate.xml");

  11. NodeList nl =doc.getElementsByTagName("PERSON");

  12. for (int i=0;i

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部