笔记本
手机
内存
cpu
投影机
主板
数码
显卡
显示器
网络
服务器
MP3
打印机
  信阳电脑网首页|电脑资讯|电脑行情|电脑导购|电脑硬件|降价风暴|下载中心|装机必备|软件下载|源码下载|教程下载|图片中心|网站建设|广告投放|  
|最新视点|软件新闻|网页制作|图像处理|媒体应用|操作系统|数码技术|编程设计|数据库类|网络安全|办公软件|等级考试|人物专访|信阳教育|IT类新闻
|新闻视频|体育新闻|军事新闻|社会新闻|信阳新闻|信阳设计|健康饮食|家居装修|信阳旅游|信阳商家|信阳婚庆|信阳美食|信阳黄页|信阳宾馆|信阳建材
|生活服务|信阳毛尖|信阳名人|信阳房产|信阳娱乐|信阳车市|市场信息|二手市场|信阳人才|卡通动漫|电子商务|电脑科技|公司企业|汽车图片|娱乐图片
信阳IT权威门户网站
 
您现在的位置: 信阳IT第一门户网站 >> 新闻中心 >> 编程设计 >> 正文
Java与XML联和编程之DOM篇
作者:佚名 文章来源:互联网 点击数: 在线投稿 投稿指南

 

DOM初步
 
DOM是Document Object Model的缩写,即文档对象模型。前面说过,XML将数据组织为一颗树,所以DOM就是对这颗树的一个对象描叙。通俗的说,就是通过解析XML文档,为XML文档在逻辑上建立一个树模型,树的节点是一个个对象。我们通过存取这些对象就能够存取XML文档的内容。

下面我们来看一个简单的例子,看看在DOM中,我们是如何来操作一个XML文档的。

这是一个XML文档,也是我们要操作的对象:



Good-bye serialization, hello Java!


下面,我们需要把这个文档的内容解析到一个个的Java对象中去供程序使用,利用JAXP,我们只需几行代码就能做到这一点。首先,我们需要建立一个解析器工厂,以利用这个工厂来获得一个具体的解析器对象:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

我们在这里使用DocumentBuilderFacotry的目的是为了创建与具体解析器无关的程序,当DocumentBuilderFactory类的静态方法newInstance()被调用时,它根据一个系统变量来决定具体使用哪一个解析器。又因为所有的解析器都福从于JAXP所定义的接口,所以无论具体使用哪一个解析器,代码都是一样的。所以当在不同的解析器之间进行切换时,只需要更改系统变量的值,而不用更改任何代码。这就是工厂所带来的好处。这个工厂模式的具体实现,可以参看下面的类图。

DocumentBuilder db = dbf.newDocumentBuilder();

当获得一个工厂对象后,使用它的静态方法newDocumentBuilder()方法可以获得一个DocumentBuilder对象,这个对象代表了具体的DOM解析器。但具体是哪一种解析器,微软的或者IBM的,对于程序而言并不重要。

然后,我们就可以利用这个解析器来对XML文档进行解析了:

Document doc = db.parse("c:/xml/message.xml");

DocumentBuilder的parse()方法接受一个XML文档名作为输入参数,返回一个Document对象,这个Document对象就代表了一个XML文档的树模型。以后所有的对XML文档的操作,都与解析器无关,直接在这个Document对象上进行操作就可以了。而具体对Document操作的方法,就是由DOM所定义的了。

Jaxp支持W3C所退荐的DOM 2。如果你对DOM很熟悉,那么下面的内容就很简单了:只需要按照DOM的规范来进行方法调用就可以。当然,如果你对DOM不清楚,也不用着急,后面我们会有详细的介绍。在这儿,你所要知道并牢记的是:DOM是用来描叙XML文档中的数据的模型,引入DOM的全部原因就是为了用这个模型来操作XML文档的中的数据。DOM规范中定义有节点(即对象)、属性和方法,我们通过这些节点的存取来存取XML的数据。

从上面得到的Document对象开始,我们就可以开始我们的DOM之旅了。使用Document对象的getElementsByTagName()方法,我们可以得到一个NodeList对象,一个Node对象代表了一个XML文档中的一个标签元素,而NodeList对象,观其名而知其意,所代表的是一个Node对象的列表:

NodeList nl = doc.getElementsByTagName("message");

我们通过这样一条语句所得到的是XML文档中所有标签对应的Node对象的一个列表。然后,我们可以使用NodeList对象的item()方法来得到列表中的每一个Node对象:

Node my_node = nl.item(0);

当一个Node对象被建立之后,保存在XML文档中的数据就被提取出来并封装在这个Node中了。在这个例子中,要提取Message标签内的内容,我们通常会使用Node对象的getNodeValue()方法:

String message = my_node.getFirstChild().getNodeValue();

请注意,这里还使用了一个getFirstChild()方法来获得message下面的第一个子Node对象。虽然在message标签下面除了文本外并没有其它子标签或者属性,但是我们坚持在这里使用getFirseChild()方法,这主要和W3C对DOM的定义有关。W3C把标签内的文本部分也定义成一个Node,所以先要得到代表文本的那个Node,我们才能够使用getNodeValue()来获取文本的内容。

现在,既然我们已经能够从XML文件中提取出数据了,我们就可以把这些数据用在和适的地方,来构筑应用程序。

[1] [2] [3] 下一页

信阳电脑网申明:本站资源来源于互联网,版权归原作者所有,如有侵权请联系我们,我们将在收到消息后24小时内删除.

  • 上一篇文章:
  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口

      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    首页推荐

    7球队或在选秀当天交易:…
    推荐文章 女大学升会网友偷走对方价值8万名表
    推荐文章 大连护士门事件“护士门”照片全集
    推荐文章 一块钱任你摸的福~务行业惊现国内,只需一块钱任你…
    推荐文章 外媒曝光中国再传震撼消息:我军又列装信杀手锏
    推荐文章 中美“信准则”阴影笼罩印度:阿三很怕中美联手
    推荐文章 美军对华警报越拉越响:中美天军太空战随时开打
    推荐文章 一触即发:美军顶级潜艇航母逼近中国内幕曝光了
    推荐文章 航母等不及了!中国建成歼15航母舰载机训练基地
    精彩信息
     面向Java开发人员的Ajax:Java对象序列化
     Java与XML联和编程之SAX篇
     Java与XML联和编程之DOM篇
     Hibernate和Jive缓存策略的比较
     浅析Java语言中两种异常的差别
     Java命令行简介
     实现高效Java编程规范的十一条基础规则
     java文件操作大全
     学习Java的30个基本概念
     十四种Java开发工具点评
    图文信息

    面向Java开发人员的Aj…

    一个简单的SWT程序实例…

    Java开源构建工具ant简…

    Java开源测试工具JUni…
    设为首页 - 加入收藏 - 广告服务 - 友情链接 - 联系我们 - 版权申明 - 网站建设 - 帮助
    豫ICP备10021913号  本站声明:本站资源来源于互联网,版权归原作者所有,如有侵权请联系我们,我们将在收到消息后24小时内删除.
    © CopyRight 2002-2008, XYDNW.COM, Inc. QQ:869696845 官方①群:58890563(满)官方②群:58890410