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,效果如下:
默认缩进的是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(); } }
运行结果:
生成的新的xml文件内容:
最后我想说一下编码 开始的时候一定要统一编码 不然生成的xml文件会乱码的!
由最代码官方编辑于2014-8-14 16:44:29
猜你喜欢
- java读写操作xml文件
- Jdom、Dom4j、W3c、String相互转换大全以及取Xml的属性值、设置Xml的属性值、删除Xm属性值
- java生成文件的校验码
- mybatis基本文件dao、model、xml、mapper自动生成java工具
- jaxb操作xml文件(自定义xml namespace 前缀,可以有多个namespace)
- java操作FTP实现文件上传下载删除操作
- java文件操作实现文件夹复制
- java XML文件解析,超简单DEMO
- java文件操作之移动文件到指定的目录
- java代码通过poi操作excel文件,支持一个文件多个sheet生成
- java自动解析pom文件生成module.xml
- java文件的读取 写入 复制 以及文件夹的拷贝等操作
- /
- /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
- /xmldemo/src
- /xmldemo/src/book.xml
- /xmldemo/src/demo
- /xmldemo