Java与XML联合编程之DOM篇
Java与XML联合编程之DOM篇
DOM初步
DOM
是Document Object
Model的缩写,即文档对象模型。前面说过,XML将数据组织为一颗树,所以DOM就是对这颗树的一个对象描叙。通俗的说,就是通过解析XML文档,为
XML文档在逻辑上建立一个树模型,树的节点是一个个对象。我们通过存取这些对象就能够存取XML文档的内容。
下面我们来看一个简单的例子,看看在DOM中,我们是如何来操作一个XML文档的。
这是一个XML文档,也是我们要操作的对象:
<?xml version="1.0" encoding="UTF-8"?>
<messages>
<message>Good-bye serialization, hello Java!</message>
</messages>
下面,我们需要把这个文档的内容解析到一个个的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很熟悉,那么下面的内容就很简单了:
相关文档:
类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要的两个环节,Google 了一遍网络,有关类装载机制的文章倒是不少,然而类初始化和对象初始化的文章并不多,特别是从字节码和 JVM 层次来分析的文章更是鲜有所见。
本文主要对类和对象初始化全过程进行分析,通过一个实际问题引入,将源代码转换成 JVM 字节码后, ......
第八章 异常
异常
两类 错误error 系统内部错误 违例exception 其他编程错误或外在因素】
异常处理机制
抛出异常throw 当不确定为何种异常和不确定怎么处理的时候使用
捕获异常catch
try{}
catch(){}
finally{}为统一出口
fileinputstream类的成员方法read()的功能是每次从相应的(本地为asc2码)文件中读出一个字节 ......
第十章
gui应用程序设计
awt abstractwindow toolkit
gui graphical user interface
组件component
container 容器
window 顶级窗口
panel 接纳其他组件的容器 不能独立存在
必须在其他容器中(如window或applet)
frame是window子类 效果是一个窗口setvisible(true)可见
component
container
window &n ......
简化Java应用程序的打包和发布
发布Java应用程序时你会感到困难?好在Java提供了一系列打包和发布工具,可以显著的简化发布过程
该文章提供了打包Java code的几种方法,我们将会探讨Java manifest 文件,给出用于管理JAR文件所依赖文件、估计跨平台发布所需的CLasspath的合适方法.我也会解释如何使用manifest包版本特性 ......
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 将汉字转化为全拼
*/
public class CnToSpell {
private static Map<String, Integer> spellMap = null;
// 存放生僻字和其拼音的Map
private static Map<Characte ......