`
JavaTestJava
  • 浏览: 55267 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java的XML文件操作之DOM入门篇 (1)

阅读更多
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文件中提取出数据了,我们就可以把这些数据用在合适的地方,来构筑应用程序。
分享到:
评论

相关推荐

    DOM4J格式化XML

    【文件名称】"UML入门教程.pptx"看似与主题"DOM4J格式化XML"不直接相关,但可以假设它是博文作者提供的补充材料,可能是为了帮助读者更好地理解XML处理背后的逻辑,通过UML(统一建模语言)来展示类图、序列图或其他...

    java中xml和excel的基本操作

    本篇将详细介绍Java中对XML和Excel进行基本操作的方法。 XML操作: 1. **解析XML**:Java提供了DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)三种解析方式。DOM一次性...

    dom4j入门例子

    **DOM4J入门详解** DOM4J是一款强大的Java XML API,它提供了丰富的DOM、SAX、JDOM等接口,使得处理XML文档变得更为便捷。...希望这篇DOM4J入门教程能帮助你快速上手,祝你在XML处理的道路上越走越远!

    XML解析入门之JDOM(一)

    本篇主要介绍XML解析的基础知识,特别是针对JDOM库的使用,一个Java平台上的XML处理库。 JDOM是Java Document Object Model的缩写,它是为了解决DOM(Document Object Model)在Java中的性能问题而设计的。JDOM提供...

    xml手册用来补充学习java的语言,循序渐进的从基础学起,帮住大家学习新的知识

    入门篇可能涵盖了XML的基础概念,如XML的语法结构,包括XML声明、元素、属性、文本内容、注释以及处理指令。它可能会解释如何创建一个基本的XML文档,并介绍验证XML文档的重要性,如使用DTD(Document Type ...

    XML编程从入门到精通

    本篇将深入探讨XML编程的基础概念、语法特性以及实际应用,帮助你从入门到精通。 1. XML基础: - **语法规范**:XML文档必须有且只有一个根元素,所有元素都以尖括号包围,如`<element>`,属性值需用引号包围。 -...

    Java获取XML节点总结之读取XML文档节点的方法

    DOM4J是一个流行的Java XML API,提供了丰富的功能来读取、写入和操作XML文档。本篇文章将详细介绍如何使用DOM4J库来读取XML文档中的节点。 首先,要使用DOM4J,你需要在项目中引入其对应的JAR文件。你可以从官方...

    xml入门课件(一)

    本篇“XML入门课件(一)”提供了深入浅出的教程,适合初学者了解和掌握XML的基本概念和用法。 1. **XML的基本原理**: - XML是一种自描述性语言,其目的是通过提供一套规则来创建具有明确结构的数据。 - XML文档...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    XML创建了标识,而DOM的作用就是告诉script如何在浏览器窗口中操作和显示这些标识 上面我们已经简要的讲述了一些XML的基本原理,我们来看看它们之间的关联以及它们是如何工作的,先看这里一张图: 1.XML描述...

    vtd-xml相关资料.zip

    7. **ximpleware-2.13-4-java**:这可能是VTD-XML的Java库文件,可以直接在Java项目中导入并使用。 通过这些资源,开发者可以深入理解VTD-XML的工作原理,学习如何在实际项目中应用VTD-XML解析XML,以及如何优化...

    用排序的调实现对XML的读写

    本篇文章将深入探讨如何利用排序方法来实现XML的读写及删除操作。 一、XML基础 XML文档由元素(Element)、属性(Attribute)、文本内容(Text Content)等构成,具有自描述性。元素是最基本的构建单元,通常包含...

    如何才算掌握Java(J2SE篇

    ### 如何才算真正掌握Java(J2SE篇) 在当今的软件开发领域中,Java作为一门重要的编程语言,被广泛应用于各种应用场景之中。对于初学者来说,如何判定自己是否已经掌握了Java,特别是在J2SE(Java 2 Standard ...

    java lecture note(Java学习笔记)

    ### 一、Java入门与基本语法 #### 课程概述 Java课程旨在介绍面向对象编程的基本原则和设计,将Java作为主要的编程语言进行教学,使学生能够掌握基础的Java编程知识,为成为Sun Certified Java Programmer(SCJP)做...

    网络编程基础篇之 Java Scrip

    【网络编程基础篇之 JavaScript】深入解析 JavaScript,一种轻量级的解释型编程语言,是Web开发中的核心语言,尤其在网络编程中扮演着至关重要的角色。本篇将带你从入门到精通,全面掌握JavaScript的基础知识及其在...

    java新手教程--入伍篇

    - **XML基础与应用**:讲解XML(可扩展标记语言)的概念、结构与用途,探讨XML数据处理技术,如DOM、XPath等在Java中的应用,以及XML Schema的数据类型定义。 #### 六、JavaScript入门 - **JavaScript语言特征**:...

    常用java资料下载网址

    在Java开发中,XML被广泛应用于配置文件、数据交换格式等领域。通过提供的链接可以看到,有关于XML的视频教程和资料,这可以帮助开发者深入理解XML的基本概念、语法结构及应用实践。 ### 关键知识点二:AJAX技术 ...

    java 核心(上下册)

    1. **Java编程基础**:包括Java开发环境的搭建,基本语法,数据类型,运算符,流程控制语句,异常处理等基础知识,是初学者入门Java的必修课。 2. **类与对象**:深入讲解面向对象编程的核心概念,如类,对象,封装...

    JAXB简易教程

    JAXB的主要目的是简化XML数据处理,让开发者能够轻松地在XML文档和Java类之间进行互操作。此教程旨在为开发人员和系统维护人员提供一个快速入门的指南,帮助他们理解和使用JAXB的基本功能。 **2. 开发指南** **2.1...

    JavaWeb开发教程——入门与提高篇(含PDF课件和源码)

    本教程"JavaWeb开发教程——入门与提高篇"旨在为初学者提供一个全面的学习路径,同时也为有一定基础的开发者提供进阶知识。教程包含了PDF课件和源码,使学习者能够理论结合实践,更深入地理解JavaWeb开发的核心概念...

Global site tag (gtag.js) - Google Analytics