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很熟悉,那么下面的内容就很简单了:
相关文档:
第三章
标识符,关键字,数据类型
注释 //单行注释 /*多行注释*/ /**文档化处理**/
javadoc source.java 文档自动生成工具
变量
程序中执行的数值可变的数据成为变量 包括变量名和变量值
java区分大小写
变量必须先定义再使用
java中为各种变量方法和类等起的名字叫做标识符(就是名字)
java中被赋予特定含义 ......
第四章
运算符,表达式和流程控制
变量用于记录数值可变的数据
java变量使用前必须先声明和初始化
成员变量在类的定义中声明
在创建对象的同时创建有关的成员变量
成员变量创建后系统自动对其进行默认初始化和显式初始化 成员变量依附于对象而存在
&&与 ||或 =赋值运算符
分支语句
if else
int i;
swit ......
第七章
高级类特征
static
类属性由该类的所有实例共享
public static int total=0;
当total所属类被数次实例化的时候 total只有一个而不是多个
也可静态初始化static
public static int total;
static{
total=100;
}
static标记的变量或者方法由整个类(所有实例)共享
单子模式
class Single{
......
著作权保护声明
Chinaitlab高度重视知识产权保护并遵守中国各项知识产权法律、法规和具有约束力规范性文件。根据法律、法规和规范性文件要求,Chinaitlab
制定了旨在保护知识产权权利人合法权益的措施和步骤,当著作权人和/或依法可以行使著作权的权利人(以下简称“权利人”)发现在本站网页的内容或下
&nbs ......
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 ......