Java解析XML文件的四种方式之JDOM解析

package com.xyls.xml;
import java.io.*;
import java.net.URI;
import java.util.*;

import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;

/*
	需要jdom-1.1.3.jar支持
	把jar文件放到D:\Java\jdk1.7.0_09\jre\lib\ext中去,即可正确完成编译
	JDOM=DOM修改文件的优点+SAX读取文件的优点
	主要操作类:
	Document定义XML文件的各种操作,获取根元素,以及各个层次的相关信息
	DOMBuilder用来建立 一个JDOM结构树
	Element定义xml元素的各种操作,元素文字内容,属性值,子节点
	Attribute定义属性的各个操作
	XMLOutputter将JDOM结构树格式化为XML文件,以输出流的方式加以输出
	测试:读取xml文件,进行部分修改操作,把修改后的文件输出到另一个xml文件中
*/
public class JdomTest{
	public static void main(String args[])throws Exception{
		SAXBuilder sax = new SAXBuilder();//建立SAX解析
		URI uri = JdomTest.class.getClassLoader().getResource("books.xml").toURI();
		File file = new File(uri);
		Document doc = sax.build(new FileInputStream(file));//获得Document
		//加入一条处理指令,了解即可
		ProcessingInstruction pi = new ProcessingInstruction("xml-stylesheet",
				"href='bookList.html.xsl' type='text/xsl'");
		doc.addContent(pi);

		Element root = doc.getRootElement();//得到根元素
		List books = root.getChildren();//得到根元素的所有子元素集合

		Element book = (Element)books.get(0);//得到第一个book元素
		Attribute a = new Attribute("hot","true");
		book.setAttribute(a);//为第一个book元素添加一条属性

		Element author = book.getChild("author");//得到第一个book元素中的指定子元素author
		author.setText("毛泽东");//将作者改为毛泽东

		Element price = book.getChild("price");//同上操作
		price.setText("50.0");
		
		XMLOutputter out = new XMLOutputter();
		out.setFormat(out.getFormat().setEncoding("GBK"));//设置输出编码
		out.output(doc,new FileOutputStream("d:"+File.separator+"test"+
				File.separator+"bookB.xml"));//把修改过的文档存入另一个文件
		
		/*
		 *使用JDOM生成xml文件示例:
		 * Element addresslist = new Element("addresslist");//定义根节点
		Element linkman = new Element("linkman");
		Element name = new Element("name");
		Element email = new Element("email");
		Attribute id = new Attribute("id", "xyls");//定义属性
		name.setText("毛泽东");//设置name元素的内容
		email.setText("mzd@test.com");
		name.setAttribute(id);//设置name元素的属性
		linkman.addContent(name);//设置linkman子节点
		linkman.addContent(email);
		addresslist.addContent(linkman);//将linkman加入到根节点中
		Document docu = new Document(addresslist);//声明Document对象
		//可以进行输出操作,见上文*/	
		}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值