已注销用户的gravatar头像
已注销用户 2014-08-14 11:14:55

Java通过jdom操作生成XML文件的实例代码下载

工作需要,要生成xml文件,所以做了个小demo分享一下。

看代码吧~ main()里面没什么好说的 该写的都写了

public static void main(String[] args) {
		//调用 DocumentBuilderFactory.newInstance() 方法得到创建 DOM 解析器的工厂 
		DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
        Element theBook=null, theElem=null, root=null;
        try {
            factory.setIgnoringElementContentWhitespace(true);//是否删除空格  false true
            DocumentBuilder db=factory.newDocumentBuilder();  //获取解析器
            //指定路径 获取xml文件的document对象
            File f = new File("src/book.xml"); 
            Document xmldoc=db.parse(f);
            root=xmldoc.getDocumentElement();
            //添加 元素(节点)
            theBook=xmldoc.createElement("book1");
            theElem=xmldoc.createElement("name");
            theElem.setTextContent("平凡的世界");
            theBook.appendChild(theElem);
            
            theElem=xmldoc.createElement("price");
            theElem.setTextContent("¥55.0");
            theBook.appendChild(theElem);

            theElem=xmldoc.createElement("conment");
            theElem.setTextContent("推荐大家看看这本书");
            theBook.appendChild(theElem);
            root.appendChild(theBook);
            
            printXML(xmldoc);				//打印至Console
            saveXml("new_book.xml", xmldoc);//保存生成 xml文件
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch (SAXException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
	}

方法:printXML() 打印到Console

1.下面的方法中得到的transFactory对象调用newTransformer()方法得到一个Transformer对象:
Transformer transformer=transFactory. newTransformer();
Transformer类在javax.xml.transform包中。
将被变换的Document对象封装到一个DOMSource对象中: 
DOMSource  domSource=new DOMSource(document);
DOMSource类在javax.xml.transform.dom包中。
将变换得到XML文件对象封装到一个StreamResult对象中: 
File file=new File("XXX.xml");
FileOutputStream out=new FileOutputStream(file);
StreamResult xmlResult=new StreamResult(out);
StreamResult类在javax.xml.transform.stream包中。
最后,Transformer 对象transformer 调用transform方法实施变换: 
transformer.transform(domSource, xmlResult);

2.transformer.setOutputProperty("indent","yes");这里比较无语 只给了 是否设置缩进 只有yes|no

你选择的是yes也就等于格式化了xml,效果如下:

Java通过jdom操作生成XML文件的实例代码下载

默认缩进的是0

关于这个缩进问题 我还没处理好呢

这里给个参考链接吧:http://blog.csdn.net/yes1983/article/details/2487455

(ps:要是不在乎这个的话可以放弃这一步)

public static void printXML(Node node) {
        TransformerFactory transFactory=TransformerFactory.newInstance();
        try {
            Transformer transformer = transFactory.newTransformer();
            transformer.setOutputProperty("encoding", "gb2312");//指定编码
            transformer.setOutputProperty("indent", "yes");     //是否设置缩进

            DOMSource source=new DOMSource();
            source.setNode(node);
            StreamResult result=new StreamResult();
            result.setOutputStream(System.out);
            
            transformer.transform(source, result);
        } catch (TransformerConfigurationException e) {
            e.printStackTrace();
        } catch (TransformerException e) {
            e.printStackTrace();
        }   
    }

方法:saveXml() 保存生成xml文件

public static void saveXml(String fileName, Document doc) {
        TransformerFactory transFactory=TransformerFactory.newInstance();
        try {
            Transformer transformer = transFactory.newTransformer();
            transformer.setOutputProperty("indent", "yes");//是否设置缩进

            DOMSource source=new DOMSource();
            source.setNode(doc);
            StreamResult result=new StreamResult();
            result.setOutputStream(new FileOutputStream(fileName));
            
            transformer.transform(source, result);
        } catch (TransformerConfigurationException e) {
            e.printStackTrace();
        } catch (TransformerException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }   
    }

运行结果:

Java通过jdom操作生成XML文件的实例代码下载

生成的新的xml文件内容:

Java通过jdom操作生成XML文件的实例代码下载

最后我想说一下编码 开始的时候一定要统一编码 不然生成的xml文件会乱码的!

 


最代码官方编辑于2014-8-14 16:44:29


打赏

文件名:xmldemo.rar,文件大小:4.833K 下载
  • /
      • /xmldemo
        • /xmldemo/.classpath
        • /xmldemo/.project
          • /xmldemo/.settings
            • /xmldemo/.settings/org.eclipse.jdt.core.prefs
          • /xmldemo/bin
            • /xmldemo/bin/book.xml
              • /xmldemo/bin/demo
                • /xmldemo/bin/demo/xmlTest.class
        • /xmldemo/new_book.xml
最代码最近下载分享源代码列表最近下载
he88318799  LV16 2020年3月18日
最代码酒酒  LV20 2019年4月17日
07311514  LV9 2019年2月22日
ycb159856  LV12 2017年4月11日
scpcyzxb  LV16 2017年3月5日
放开那女孩  LV15 2016年11月17日
zyl  LV34 2016年9月7日
i小妖  LV11 2016年4月15日
最代码官方  LV168 2014年8月14日
最代码最近浏览分享源代码列表最近浏览
wbbhappy  LV13 1月11日
1443251642  LV1 2022年12月19日
zql666  LV9 2021年9月28日
壹级天灾  LV14 2021年7月7日
Hachi6  LV13 2021年5月10日
15939671505 2020年12月18日
暂无贡献等级
djzhang  LV1 2020年11月5日
旧梦十年丶  LV2 2020年10月21日
1234567891011  LV5 2020年6月26日
guwuqifei  LV5 2020年6月19日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友