`
kingxss
  • 浏览: 969290 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Jdom方式进行的XML文件、Document、String之间的相互转换

    博客分类:
  • XML
XML 
阅读更多

XML文件:

 

<?xml version="1.0" encoding="UTF-8"?><books><book><name>哈里波特</name><price>10</price><memo>这是一本很好看的书。</memo></book></books>

Java代码:

 

import java.io.*;

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();
		}
		
	}
}

 

输出XML文件:

 

<?xml version="1.0" encoding="UTF-8"?>
<books>
     <book>
          <name>哈里波特</name>
          <price>10</price>
          <memo>这是一本很好看的书。</memo>
     </book>
</books>
1
10
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics