Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2089333
  • 博文数量: 519
  • 博客积分: 10070
  • 博客等级: 上将
  • 技术积分: 3985
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-29 14:05
个人简介

只问耕耘

文章分类

全部博文(519)

文章存档

2016年(1)

2013年(5)

2011年(46)

2010年(220)

2009年(51)

2008年(39)

2007年(141)

2006年(16)

我的朋友

分类: Java

2009-01-06 14:18:48

在java环境下读取xml文件的方法主要有4种:DOM、SAX、JDOM、JAXB
1. DOM(Document Object Model)
此方法主要由W3C提供,它将xml文件全部读入内存中,然后将各个元素组成一棵数据树,以便快速的访问各个节点。因此非常消耗系统性能,对比较大的文档不适宜采用DOM方法来解析。 DOM API 直接沿袭了 XML 规范。每个结点都可以扩展的基于 Node 的接口,就多态性的观点来讲,它是优秀的,但是在 Java 语言中的应用不方便,并且可读性不强。实例:
import javax.xml.parsers.*;
//XML解析器接口
import org.w3c.dom.*;
//XML的DOM实现
import org.apache.crimson.tree.XmlDocument;
//写XML文件要用到

DocumentBuilderFactory factory
= DocumentBuilderFactory.newInstance();
//允许名字空间
factory.setNamespaceAware(true);
//允许验证
factory.setValidating(true);
//获得DocumentBuilder的一个实例
try {
DocumentBuilder builder
= factory.newDocumentBuilder();
}
catch (ParserConfigurationException pce) {
System.err.println(pce);
// 出异常时输出异常信息,然后退出,下同
System.exit(1);
}

//解析文档,并获得一个Document实例。
try {
Document doc
= builder.parse(fileURI);
}
catch (DOMException dom) {
System.err.println(dom.getMessage());
System.exit(
1);
}
catch (IOException ioe) {
System.err.println(ioe);
System.exit(
1);
}


//获得根节点StuInfo
Element elmtStuInfo = doc.getDocumentElement();

//得到所有student节点
NodeList nlStudent = elmtStuInfo.getElementsByTagNameNS(
strNamespace,
"student");
for (……){
//当前student节点元素
Element elmtStudent = (Element)nlStudent.item(i);

NodeList nlCurrent
= elmtStudent.getElementsByTagNameNS(
strNamespace,
"name");
}

对于读取得方法其实是很简单的,写入xml文件也是一样不复杂。

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder
= null;
try {
builder
= factory .newDocumentBuilder();
}
catch (ParserConfigurationException pce) {
System.err.println(pce);
System.exit(
1);
}


Document doc
= null;
doc
= builder .newDocument();

//下面是建立XML文档内容的过程,
//先建立根元素"学生花名册"
Element root = doc.createElement("学生花名册");
//根元素添加上文档
doc.appendChild(root);
//建立"学生"元素,添加到根元素
Element student = doc.createElement("学生");
student.setAttribute("性别", studentBean.getSex());
root.appendChild(student);
//建立"姓名"元素,添加到学生下面,下同
Element name = doc.createElement("姓名");
student.appendChild(name);
Text tName = doc.createTextNode(studentBean.getName());
name.appendChild(tName);

Element age = doc.createElement("年龄");
student.appendChild(age);
Text tAge = doc.createTextNode(String.valueOf(studentBean.getAge()));
age.appendChild(tAge);

阅读(1250) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~