Java四种生成xml文件的方法
2016-05-01 17:10
543 查看
学习来源于视频:imooc网
1,DOM
2,SAX
3,DOM4J
4,JDOM
1,DOM
//创建一个DocumentBuilderFactory对象 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); //创建一个DocumentBuilder对象 try { DocumentBuilder db = dbf.newDocumentBuilder(); Document document = db.newDocument(); document.setXmlStandalone(true); Element bookstore = document.createElement("bookStore"); //向bookStore根节点中添加子节点 Element book = document.createElement("book"); book.setAttribute("id", "1"); Element name = document.createElement("name"); name.setTextContent("sdingba"); book.appendChild(name); //将book节点添加到bookstore中 bookstore.appendChild(book); //将bookstore节点(已经包含book),添加到dom树中 document.appendChild(bookstore); //生成xml对象 //创建TransformerFactory TransformerFactory tff = TransformerFactory.newInstance(); //创建Transformer对象 Transformer tf = tff.newTransformer(); //设置 生成的xml文件是否换行。 tf.setOutputProperty(OutputKeys.INDENT,"yes"); tf.transform(new DOMSource(document), new StreamResult(new File("book.xml"))); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (TransformerConfigurationException e) { e.printStackTrace(); } catch (TransformerException e) { e.printStackTrace(); }
2,SAX
//1,创建 一个TransformerFactory的类的对象 SAXTransformerFactory tff = (SAXTransformerFactory) SAXTransformerFactory.newInstance(); try { //2,通过SAXTransformerFactory对象创建一个TransformerHandler对象 TransformerHandler handler = tff.newTransformerHandler(); //3.通过handler对象创建一个Transformor Transformer tr = handler.getTransformer(); //4,通过对象,对生成的xml文件进行设置 tr.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); tr.setOutputProperty(OutputKeys.INDENT, "yes"); //5,创建一个result对象 File file = new File("book2.xml"); if (!file.exists()) { file.createNewFile(); } //6,创建resulet对象,并且是的与handler关联 Result result = new StreamResult(new FileOutputStream(file)); handler.setResult(result); //7.利用handler对象进行xml文件内容的编写 //打开document handler.startDocument(); AttributesImpl attr = new AttributesImpl(); handler.startElement("", "", "bookstart", attr); attr.clear(); //// for(){} 在for循环中添加数据。对了List数值进行遍历 //添加一本书 attr.addAttribute("","","id","","1"); handler.startElement("", "", "book", attr); //创建name节点 attr.clear(); handler.startElement("", "", "name", attr); handler.characters("你是我的女神".toCharArray(),0,"你是我的女神".length()); handler.endElement("","","name"); // 。。。。。 handler.endElement("","","book"); handler.endElement("","","bookstart"); //关闭 handler.endDocument(); } catch (TransformerConfigurationException e) { } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); }
3,DOM4J
//1,创建 document对象,代表整个xml文档 Document document = DocumentHelper.createDocument(); //2,创建 根节点 Element rss = document.addElement("rss"); //向rrs中添加属性 rss.addAttribute("version", "2.0"); //3,生成子节点和节点内容 Element channel = rss.addElement("channel"); Element title = channel.addElement("title"); title.setText("国内新闻"); //要在下面设置是否转义 // title.setText("<![CDATA[国内新闻]]>"); //设置xml的格式 OutputFormat format = OutputFormat.createPrettyPrint(); // format.setEncoding("GBK");设置编码格式 //4,生成xml文件 File file = new File("rss.xml"); XMLWriter write = null; try { write = new XMLWriter(new FileOutputStream(file),format); //设置是否转义,默认值是true,代表转义 write.setEscapeText(false); write.write(document); write.close(); } catch (IOException e) { e.printStackTrace(); }
4,JDOM
//生成一个根节点 Element rss = new Element("rss"); rss.setAttribute("version", "2.0"); //生成一个document对象 Document document = new Document(rss); Element channel = new Element("channel"); rss.addContent(channel); Element title = new Element("title"); // title.setText("国内最新新闻"); title.setText("<![CDATA[新闻联盟]]>"); channel.addContent(title); Format format = Format.getCompactFormat(); format.setIndent(""); format.setEncoding("UTF-8"); // format.setTextMode(Format.TextMode.TRIM); // format.setOmitEncoding(false); // format.setSpecifiedAttributesOnly(true); //4,创建xmlOutputer对象 XMLOutputter outputer = new XMLOutputter(); //5.利用outputer对象,将document转化成一个流 try { outputer.output(document, new FileOutputStream(new File( "rssjdom.xml" ))); } catch (IOException e) { e.printStackTrace(); }
相关文章推荐
- JAVA多线程之中断机制(如何处理中断?)
- 《Java程序设计》第9周学习总结
- 20160501--struts2入门2
- 20145211 《Java程序设计》第九周学习总结——垂死病中惊坐起
- Java注解(三) 自定义注解与提取注解
- 使用JAVA将Hadoop HDFS中的日志文件导入HBase中(一)
- RxJava组合操作符
- Maple OpenMaple (API) 开发系列-2.0 Java开发环境搭建
- 《Java中的抽象类及抽象类的作用》
- struts2基本介绍以及环境配置
- Java中的四种内部类
- 《Java程序设计》实验四 实验报告
- Eclipse中 package 中创建新package 会分离的问题
- Struts2在开发中的一些异常总结(持续更新)
- eclipse color theme 主题颜色
- JVM指令集(指令码、助记符、功能描述)
- springmvc自定义拦截器
- 《Java程序设计》第9周学习总结
- 安卓java.lang.IllegalArgumentException: The observer is null.解决方案
- 安卓java.lang.IllegalArgumentException: The observer is null.解决方案