package util;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileWriter;
import java.io.StringReader; import org.jdom.Document;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter; /**
* JDOM 方式操作XML
*
* @author Watson Xu
* @date 2011-5-3 下午02:20:49
*/
public class OperationXMLByJdom {
/**
* DOCUMENT格式化输出保存为XML
*
* @param doc JDOM的Document
* @param filePath 输出文件路径
* @throws Exception
*/
public static void doc2XML(Document doc, String filePath) throws Exception{
Format format = Format.getCompactFormat();
format.setEncoding("UTF-8"); //设置XML文件的字符为UTF-8
format.setIndent(" ");//设置缩进 XMLOutputter outputter = new XMLOutputter(format);//定义输出 ,在元素后换行,每一层元素缩排四格
FileWriter writer = new FileWriter(filePath);//输出流
outputter.output(doc, writer);
writer.close();
} /**
* 字符串转换为DOCUMENT
*
* @param xmlStr 字符串
* @return doc JDOM的Document
* @throws Exception
*/
public static Document string2Doc(String xmlStr) throws Exception {
java.io.Reader in = new StringReader(xmlStr);
Document doc = (new SAXBuilder()).build(in);
return doc;
} /**
* Document转换为字符串
*
* @param xmlFilePath XML文件路径
* @return xmlStr 字符串
* @throws Exception
*/
public static String doc2String(Document doc) throws Exception {
Format format = Format.getPrettyFormat();
format.setEncoding("UTF-8");// 设置xml文件的字符为UTF-8,解决中文问题
XMLOutputter xmlout = new XMLOutputter(format);
ByteArrayOutputStream bo = new ByteArrayOutputStream();
xmlout.output(doc, bo);
return bo.toString();
} /**
* XML转换为Document
*
* @param xmlFilePath XML文件路径
* @return doc Document对象
* @throws Exception
*/
public static Document xml2Doc(String xmlFilePath) throws Exception {
File file = new File(xmlFilePath);
return (new SAXBuilder()).build(file);
} public static void main(String[] args) {
try{
Document doc = xml2Doc("test.xml");
System.out.println(doc);
System.out.println(doc2String(doc));
doc = string2Doc(doc2String(doc));
doc2XML(doc, "1.xml");
} catch (Exception e) {
e.printStackTrace();
} }
}

最新文章

  1. CSS自动换行
  2. ID3决策树的Java实现
  3. GATK-BWA-MEM handle GRCh38 alternate contig mappings
  4. spring boot实战(第十三篇)自动配置原理分析
  5. CSS基础知识点(二)——居中
  6. 51nod1057 N的阶乘
  7. asp.net gridview中增加单击单元格事件
  8. XP系统取消开机硬件检查
  9. SQL学习之计算字段的用法与解析
  10. 获取所有栈的信息,只有最上面的和最下面的,但是不能获取栈中间的activity信息
  11. 018-继承-OC笔记
  12. vue + websocket 的使用
  13. linux 返回上次历史目录
  14. bp代码
  15. MapReduce过程详解及其性能优化
  16. Java WebService 简单实例[转载]
  17. sqoop2问题解决
  18. Mysql官方文档中争对安全添加列的处理方法。Mysql Add a Column to a table if not exists
  19. 对于PHP绘图技术的理解
  20. c# 水晶报表使用说明

热门文章

  1. Android体系结构
  2. jdbc 连接 oracle rac
  3. Ubuntu无值守安装mysql
  4. c++基础(二):成员he派生类
  5. jsapi支付,提示redirect_uri 参数错误
  6. 扒一扒编辑距离(Levenshtein Distance)算法
  7. html 元素 变小手
  8. 第2章 HelloWorld
  9. < java.util >-- List接口
  10. [shell基础]——数组