您的位置:首页 > 编程语言 > Java开发

java使用org.w3c.dom解析XML文档,创建、增删查改,保存,读取,遍历元素等操作

2017-10-06 11:10 1246 查看
全栈工程师开发手册 (作者:栾鹏)

java教程全解

java使用org.w3c.dom(java dom)解析XML文档,创建、增删查改,保存,读取,遍历元素等操作

在保存文件时需要载入crimson.jar库,下载

测试代码

import java.io.*; //Java基础包,包含各种IO操作 
import java.util.*; //Java基础包,包含各种标准数据结构操作 
import javax.xml.parsers.*; //XML解析器接口 
import org.w3c.dom.*; //XML的DOM实现 
import org.apache.crimson.tree.XmlDocument; //写XML文件要用到 

public static void main(String[] args) {
Document doc=creat_xml();
save_xml(doc, "student.xml");
read_xml("student.xml");
}


创建xml文档及元素

//创建一个Document,用于存储成xml
public static Document creat_xml()
{
//为解析XML作准备,创建DocumentBuilderFactory实例,指定DocumentBuilder 
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
try {
db = dbf.newDocumentBuilder();
Document doc = db.newDocument();

//下面是建立XML文档内容的过程,先建立根元素
Element root = doc.createElement("花名册");
//根元素添加到文档 
doc.appendChild(root);

//建立子元素
for (int i = 0; i < 10; i++) {
//建立一级子元素,添加到根元素 
Element student = doc.createElement("学生");
//为一级子元素设置属性
student.setAttribute("性别", "男");
root.appendChild(student);
//为一级子元素添加文本
Text tName = doc.createTextNode("学生"+i);
student.appendChild(tName);
}
return doc;

} catch (Exception err) {
err.printStackTrace();
System.exit(1);
}
return null;
}


将文档document保存成xml文件

//将Document保存成xml文件
public static void save_xml(org.w3c.dom.Document doc,String filepath)
{
try {
//把XML文档输出到指定的文件
org.apache.crimson.tree.XmlDocument xmlDoc = (org.apache.crimson.tree.XmlDocument)doc;
FileOutputStream outStream = new FileOutputStream(filepath);
OutputStreamWriter outWriter = new OutputStreamWriter(outStream);
xmlDoc.write(outWriter, "GB2312");
outWriter.close();
outStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}


读取遍历xml文件

public static void read_xml(String filepath)
{
try {
//创建解析工厂
DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
//指定DocumentBuilder
DocumentBuilder builder = dbfactory.newDocumentBuilder();
//从文件构造一个Document,因为XML文件中已经指定了编码,所以这里不必了
Document doc = builder.parse(new File(filepath));
//得到Document的根
Element root = doc.getDocumentElement();
System.out.println("根节点标记名:" + root.getTagName());

System.out.println("*****下面遍历XML元素*****");
//获得一级子元素
NodeList list = root.getElementsByTagName("学生");
//遍历一级子元素
for (int i=0; i < list.getLength() ; i++) {
//获得一级子元素
Element element = (Element)list.item(i);
//获得性别属性
String sex = element.getAttribute("性别");
//获得元素的值
String name = element.getFirstChild().getNodeValue();
System.out.println("性别:" + sex + "  " +"名称:" + name);
}
} catch (Exception e) {
e.printStackTrace();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐