`
coolszy
  • 浏览: 1408214 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

使用Jdom对xml文件进行基本操作

XML 
阅读更多

使用Jdom对xml文件进行基本操作演示

 

注:创建后的XML文件形式如下,假设ID为主键:

 

<?xml version="1.0" encoding="UTF-8"?>
<class>
	<student id="2009">
		<name>coolszy</name>
		<gender>boy</gender>
		<birthday>1988-01-01</birthday>
	</student>
</class>

 

首先创建一个Student类,包含了student的基本属性

 

package com.szy.xmloperation;

public class Student
{
	private String id;
	private String name;
	private String gender;
	private String birthday;
	
	public String getId()
	{
		return id;
	}
	public void setId(String id)
	{
		this.id = id;
	}
	public String getName()
	{
		return name;
	}
	public void setName(String name)
	{
		this.name = name;
	}
	public String getGender()
	{
		return gender;
	}
	public void setGender(String gender)
	{
		this.gender = gender;
	}
	public String getBirthday()
	{
		return birthday;
	}
	public void setBirthday(String birthday)
	{
		this.birthday = birthday;
	}
}

 

 

对XML进行基本的操作,一些其它的操作类似,在此就没有写出

 

package com.szy.xmloperation;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
import org.jdom.output.Format.TextMode;

public class XMLOperation
{
	/**
	 * 创建xml文件
	 * @param xml文件的路径+文件名
	 * @throws Exception
	 */
	public void create(String filePath) throws Exception
	{
		Document doc=null;
		Element root=null;
		root=new Element("class");  //创建跟节点
		doc=new Document(root);
		outPut(doc, filePath);  //输出到xml文件中
	}
	
	/**
	 * 往xml文件中添加新节点
	 * @param Student对象
	 * @param xml文件的路径+文件名
	 * @throws Exception
	 */
	public void addNode(Student student,String filePath) throws Exception
	{
		Document doc=null;
		Element root=null;
		SAXBuilder sb=new SAXBuilder(false);
		doc=sb.build(new FileInputStream(new File(filePath)));
		root=doc.getRootElement();  //获取根元素
		
		Element studentElement=new Element("student");
		studentElement.setAttribute("id",student.getId());
		
		Element namElement=new Element("name");
		namElement.addContent(student.getName());
		studentElement.addContent(namElement);
		
		Element genderElement=new Element("gender");
		genderElement.addContent(student.getGender());
		studentElement.addContent(genderElement);
		
		Element birthdayElement=new Element("birthday");
		birthdayElement.addContent(student.getBirthday());
		studentElement.addContent(birthdayElement);
		
		root.addContent(studentElement);
		outPut(doc, filePath);
	}
	
	/**
	 * 修改节点属性的值
	 * @param 属性名
	 * @param 原来的值
	 * @param 新的值
	 * @param xml文件的路径+文件名
	 * @throws Exception
	 */
	public void modifyProperty(String propertyName,String oldValue,String newValue,String filePath) throws Exception
	{
		Document doc=null;
		Element root=null;
		SAXBuilder sb=new SAXBuilder(false);
		doc=sb.build(new FileInputStream(new File(filePath)));
		root=doc.getRootElement();  //获取根元素
		List<Element> list=root.getChildren("student");
		for (Element element : list)
		{
			if (element.getAttributeValue(propertyName).equals(oldValue))
			{
				element.setAttribute(propertyName, newValue);
				break;
			}
		}	
		outPut(doc, filePath);
	}
	
	public void deleteNode(String id,String filePath) throws Exception
	{
		Document doc=null;
		Element root=null;
		SAXBuilder sb=new SAXBuilder(false);
		doc=sb.build(new FileInputStream(new File(filePath)));
		root=doc.getRootElement();  //获取根元素
		List<Element> list=root.getChildren("student");
		for (Element element : list)
		{
			if (element.getAttributeValue("id").equals(id))
			{
				root.removeContent(element);
				break;
			}
		}	
		outPut(doc, filePath);
	}
	
	/**
	 * 把结果保存到xml文件中
	 * @param doc Document对象
	 * @param filePath xml文件路径+文件名
	 * @throws Exception
	 */
	private void outPut(Document doc,String filePath) throws Exception
	{
		XMLOutputter output=new XMLOutputter();
		Format format=output.getFormat();
		format.setEncoding("UTF-8");  //设置编码
		format.setIndent("\t");
		format.setLineSeparator(System.getProperty("line.separator"));
		format.setTextMode(TextMode.TRIM_FULL_WHITE);  //去掉后观察效果
		format.setExpandEmptyElements(true);
		output.setFormat(format);
		FileWriter writer=new FileWriter(filePath);
		output.output(doc, writer);
		writer.close();
	}
}

 

 

附上源码,包含Jdom包,API文档需要的可到官网下载。

分享到:
评论

相关推荐

    JDOM操作XML文件.doc

    JDOM操作XML文件 这篇文章讲的不错~把JDOM的基本操作实例化了,不过由于当时的作者用的JDOM版本还比较陈旧,所以部分代码会编译出错!支持中文也不好!所以,法老在原作者的基础上对程序做了修改!休正了编译出错以及...

    java开发教程Jdom使用教程

    JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。

    xml入门教程/xml入门教程

    对XML文件的要求,格式良好(符合XML的语法要求),有效的XML; XML的用途,数据传输的中间件,做为通用文档格式 1,数据交换 2,web服务 3,内容管理 4,web集成 5,充当配置文件 格式良好的XML文件的规范 XML...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    第3章 对xml文档进行分析 46 3.1 dom、sax和jaxp 46 3.2 使用dom解析xml文档 47 3.2.1 dom结构模型 47 3.2.2 dom解析器工厂 50 3.2.3 jaxp的错误类和异常类 52 3.2.4 用dom解析xml文档实例 53 3.3 使用sax...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    第3章 对xml文档进行分析 46 3.1 dom、sax和jaxp 46 3.2 使用dom解析xml文档 47 3.2.1 dom结构模型 47 3.2.2 dom解析器工厂 50 3.2.3 jaxp的错误类和异常类 52 3.2.4 用dom解析xml文档实例 53 3.3 使用sax...

    DWR.xml配置文件说明书(含源码)

    Singatures配置允许我们对DWR要操作的对象类型进行配置.对于了解JDK5泛型编程的开发人员来说下面的格式是很容易理解的. &lt;![CDATA[ import java.util.List; import com.example.Check; Check.setLotteryResults...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    第3章 对xml文档进行分析 46 3.1 dom、sax和jaxp 46 3.2 使用dom解析xml文档 47 3.2.1 dom结构模型 47 3.2.2 dom解析器工厂 50 3.2.3 jaxp的错误类和异常类 52 3.2.4 用dom解析xml文档实例 53 3.3 使用sax...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    第3章 对xml文档进行分析 46 3.1 dom、sax和jaxp 46 3.2 使用dom解析xml文档 47 3.2.1 dom结构模型 47 3.2.2 dom解析器工厂 50 3.2.3 jaxp的错误类和异常类 52 3.2.4 用dom解析xml文档实例 53 3.3 使用sax...

    JAVA编程百例(照着例子更容易!)

    实例71 使用JDOM操作XML 实例72 欢迎进入APPLET世界 实例73 传递参数 实例74 监测鼠标事件 实例75 监测键盘事件 实例76 在APPLET中使用SWING 实例77 应用JAR包 实例78 播放声音 实例79 一个简单的SERVLET 实例8 类的...

    毕设项目,同步用的.rar

    涉及了包括 Swing 界面编程、文件和IO流操作、JDOM 解析 XML 文档等方面的知识点。 3. Java实现在线协作文档编辑 多人在线协作文档编辑器是一个很常用的功能,适合小组内的文档编辑;使用java编写代码,应用...

    Java编程汇总 电子书内涉及线程操作, Access,MySQL,Sqlser2000-2005,oracle,

    电子书内涉及线程操作, Access,MySQL,Sqlser2000-2005,oracle,的基本...jdom解析xml,java基本操作,对图片,文件,文件流 还有SSH,EJB,MVC涉及的数据库操场资料 跟人整理,仅供参考,希望可以给初学者一些帮助

    通用的POI导入Excel解决方案

    然后在这个基础上,我们可以对数据进行一些操作,如:数据校验,插入数据。。。 其中数据校验时,如果数据不合法,给用户的提示信息可以精确指定某个单元格的数据不合法。(如:提示信息为:A3单元格数据不合法!) ...

    java源码包---java 源码 大量 实例

    2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性...

    Java数据库编程宝典2

    目录 前言 第1部分 介绍数据库、SQL和JDBC 第1章 关系型数据库 1.1 理解关系型数据库管理系统 1.1.1 关系模型 1.1.2 Codd法则 1.1.3 表、行、列和关键字 ... 17.3 使用Java XML API——Xerces和JDOM ...

    Java数据库编程宝典4

    目录 前言 第1部分 介绍数据库、SQL和JDBC 第1章 关系型数据库 1.1 理解关系型数据库管理系统 1.1.1 关系模型 1.1.2 Codd法则 1.1.3 表、行、列和关键字 ... 17.3 使用Java XML API——Xerces和JDOM ...

    Java数据库编程宝典1

    目录 前言 第1部分 介绍数据库、SQL和JDBC 第1章 关系型数据库 1.1 理解关系型数据库管理系统 1.1.1 关系模型 1.1.2 Codd法则 1.1.3 表、行、列和关键字 ... 17.3 使用Java XML API——Xerces和JDOM ...

    Java数据库编程宝典3

    目录 前言 第1部分 介绍数据库、SQL和JDBC 第1章 关系型数据库 1.1 理解关系型数据库管理系统 1.1.1 关系模型 1.1.2 Codd法则 1.1.3 表、行、列和关键字 ... 17.3 使用Java XML API——Xerces和JDOM ...

    Java语言基础下载

    使用DDL,DML语言对数据库进行基本操作 338 查询数据库里的数据 339 预编译语句(PreparedStatement) 340 使用事务 341 事务的级别控制 343 使用存储过程 345 操作元数据 347 ResultSetMetaData(结果集元数据) 349...

Global site tag (gtag.js) - Google Analytics