XML文件生成
来源:互联网 发布:蚌埠市农村金融数据 编辑:程序博客网 时间:2024/06/05 00:50
XML文件生成方法
1.DOM和SAX(官方)
DOM生成XML文件(基于tree)
1.获取documentBuilder对象
2.获取Document对象
3.创建根节点
4.将子节点添加到DOM树中
5.创建TransformFactory对象
6.创建Transformer对象
7.将document对象(DOM树)转换为xml文件,并控制格式输出
SAX生成XML文件(基于事件)
1.生成一个SAXTransformerFactory类的对象
2.通过SAXTransformerFactory创建一个TransformerHandler的对象
3.通过TransformerHandler对象创建一个Transformer对象
4.通过transformer对象,对XML文件进行设置,如:setProperty,设置编码和换行
5.创建一个result对象,进行文件创建和文件输出流的编写(属性设置之后,document打开之前)
6.使result和TransformerHandler关联
7.利用TransformerHandler对象对XML文件进行编写
8.打开document
9.循环生成book节点和book下的子节点
10.关闭document
2.DOM4J和JDOM(生成全新形式的文件-RSS)
DOM4J生成XML文件(基于底层API)
1.创建document对象,代表整个XML文档
2.创建根节点rss
3.向rss节点中添加version属性
4.向rss节点中添加节点和节点内容
5.设置XML文件格式,和编码字符集
6.内容中处理转义字符(生成的文本不会自动转义)
7.控制台输出XML文件内容
8.生成XML文件
JDOM生成XML文件(基于底层API)
1.生成一个根节点
2.为节点添加属性
3.生成一个document对象
4.向节点中添加内容
5.创建一个XMLOutputter对象
6.利用output将document对象转换为XML文件
区别:
DOM生成的树驻留在内存中(倒树模型-根-》叶)
方便后序改动,修改删除
SAX生成的树不驻留在内存中,一步一步生成
不可以走回头路,SAX性能高,后面不可改动
性能测试:(生成XML时间)
按照生成XML时间排序:
DOM > JDOM > DOM4J > SAX
性能依次提升。
Code-1:DOM创建XML文件package com.xml;import java.io.File;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import javax.xml.transform.OutputKeys;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerConfigurationException;import javax.xml.transform.TransformerException;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import org.w3c.dom.Document;import org.w3c.dom.Element;public class DOMCreateXML { /** * 创建XML文件 * @param args */ public DocumentBuilder getDocumentBuilder(){ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = null; try { db = dbf.newDocumentBuilder(); } catch (ParserConfigurationException e) { e.printStackTrace(); } return db; } public void createXML(){ DocumentBuilder db = getDocumentBuilder(); Document doc= db.newDocument(); doc.setXmlStandalone(true); //创建根节点 Element bookstore = doc.createElement("bookstore"); //向bookstore中添加节点 Element book = doc.createElement("book"); Element name = doc.createElement("name"); name.setTextContent("小王子"); book.setAttribute("id", "001"); bookstore.appendChild(book); book.appendChild(name); //将bookstore()添加到document树中 doc.appendChild(bookstore); //创建树之后将树DOM转换为XML文件 TransformerFactory tff = TransformerFactory.newInstance(); try { Transformer tf = tff.newTransformer(); //进行合理换行(键值对(属性名和属性值)) tf.setOutputProperty(OutputKeys.INDENT, "yes"); tf.transform(new DOMSource(doc), new StreamResult(new File("src/e.xml"))); } catch (TransformerConfigurationException e) { e.printStackTrace(); } catch (TransformerException e) { e.printStackTrace(); } } /** * 主程序 * @param args */ public static void main(String[] args) { DOMCreateXML c = new DOMCreateXML(); c.createXML(); }}Code-2:SAX创建XML文件package com.xml;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.ArrayList;import javax.xml.parsers.ParserConfigurationException;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import javax.xml.transform.OutputKeys;import javax.xml.transform.Result;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerConfigurationException;import javax.xml.transform.sax.SAXTransformerFactory;import javax.xml.transform.sax.TransformerHandler;import javax.xml.transform.stream.StreamResult;import org.xml.sax.SAXException;import org.xml.sax.helpers.AttributesImpl;public class SAXCreateXML { /** * SAX方式生成XML文件 * * @param args */ // 利用一个XML文件解析的结果生成一个XML文件 public ArrayList<Book> parseXML() { // 1首先获取一个SAXFactory的实例factory SAXParserFactory factory = SAXParserFactory.newInstance(); // 2通过factory获取SAXParser的实例 // 2创建一个SAXParseHandler的实例 SAXParseHandler phandler = new SAXParseHandler(); try { SAXParser parser = factory.newSAXParser(); parser.parse("books.xml", phandler); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } ArrayList booklist = phandler.getBooklist(); return booklist; } public void createXML() { ArrayList<Book> booklist = parseXML(); // 生成一个XML文件 // 1.生成一个SAXTransformerFactory类的对象, SAXTransformerFactory tff = (SAXTransformerFactory) SAXTransformerFactory.newInstance(); try { // 2.通过SAXTransformerFactory创建一个TransformerHandler的对象 TransformerHandler tfh = tff.newTransformerHandler(); // 3.通过TransformerHandler对象创建一个Transformer对象 Transformer tf = tfh.getTransformer(); // 4.通过transformer对象,对XML文件进行设置,如:setProperty,设置编码和换行,在setResult之前写 tf.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); tf.setOutputProperty(OutputKeys.INDENT, "yes"); // 5.创建一个result对象,进行文件创建和文件输出流的编写 File f = new File("src/newbooks.xml"); if (!f.exists()) { f.createNewFile(); } Result result = new StreamResult(new FileOutputStream(f)); // 6.使result和TransformerHandler关联 tfh.setResult(result); // 7.利用handler对象对XML文件进行编写 // 8.打开document tfh.startDocument(); // AttributesImpl attr = new AttributesImpl(); // tfh.startElement("", "", "bookstore", attr); // attr.clear(); // tfh.startElement("", "", "book", attr); // attr.addAttribute("", "", "id", "", "001"); // tfh.endElement("", "", "book"); // tfh.endElement("", "", "bookstore"); // 循环生成book节点 AttributesImpl attr = new AttributesImpl(); tfh.startElement("", "", "bookstore", attr); for (Book book : booklist) { attr.clear(); attr.addAttribute("", "", "id", "", book.getId()); tfh.startElement("", "", "book", attr); //创建name节点 if(book.getName()!=null && !book.getName().trim().equals("")){ attr.clear(); tfh.startElement("", "", "name", attr); tfh.characters(book.getName().toCharArray(), 0, book.getName().length()); tfh.endElement("", "", "name"); } //创建year节点 if(book.getYear()!=null && !book.getYear().trim().equals("")){ attr.clear(); tfh.startElement("", "", "year", attr); tfh.characters(book.getYear().toCharArray(), 0, book.getYear().length()); tfh.endElement("", "", "year"); } //创建author节点 if(book.getAuthor()!=null && !book.getAuthor().trim().equals("")){ attr.clear(); tfh.startElement("", "", "author", attr); tfh.characters(book.getAuthor().toCharArray(), 0, book.getAuthor().length()); tfh.endElement("", "", "author"); } //创建price节点 if(book.getPrice()!=null && !book.getPrice().trim().equals("")){ attr.clear(); tfh.startElement("", "", "price", attr); tfh.characters(book.getPrice().toCharArray(), 0, book.getPrice().length()); tfh.endElement("", "", "price"); } //创建language节点 if(book.getLanguage()!=null && !book.getLanguage().trim().equals("")){ attr.clear(); tfh.startElement("", "", "language", attr); tfh.characters(book.getLanguage().toCharArray(), 0, book.getLanguage().length()); tfh.endElement("", "", "language"); } tfh.endElement("", "", "book"); } tfh.endElement("", "", "bookstore"); // 9.关闭document tfh.endDocument(); } catch (TransformerConfigurationException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { SAXCreateXML c = new SAXCreateXML(); c.createXML(); }}Code-3:DOM4J创建XML文件package com.xml;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.UnsupportedEncodingException;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.XMLWriter;public class DOM4JRSS { /** * DOM4J生成RSS文件 * @param args */ public void createXML(){ //1.创建document对象,代表整个XML文档 Document doc = DocumentHelper.createDocument(); //2.创建根节点rss Element rss = doc.addElement("rss"); //3.向rss节点中添加version属性 rss.addAttribute("version", "2.0"); //4.向rss节点中添加节点和节点内容 Element chanel = rss.addElement("chanel"); Element title = chanel.addElement("title"); title.setText("<娱乐消息>"); //生成XML文件 //控制台输出XML文件内容 //设置XML文件格式,和编码字符集 OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("GBK"); XMLWriter writer = null; try { writer = new XMLWriter(format); //5.内容中处理转义字符(生成的文本不会自动转义) //默认值为TRUE--转义 writer.setEscapeText(false); } catch (UnsupportedEncodingException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } try { writer.write(doc); writer.close(); } catch (IOException e) { e.printStackTrace(); } //生成XML文件 File f = new File("rss.xml"); try { XMLWriter writeXMl = new XMLWriter(new FileOutputStream(f), format); writeXMl.write(doc); writeXMl.close(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { DOM4JRSS dom = new DOM4JRSS(); dom.createXML(); }}Code-4:JDOM生成XML文件package com.xml;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import org.jdom2.Document;import org.jdom2.Element;import org.jdom2.output.Format;import org.jdom2.output.XMLOutputter;public class JDOMXML { public void createXML(){ //1.生成一个根节点 Element rss = new Element("rss"); //2.为节点添加属性 rss.setAttribute("version","2.0"); //3.生成一个document对象 Document doc = new Document(rss); //4.向节点中添加内容 Element chanel = new Element("chanel"); rss.addContent(chanel); Element title = new Element("title"); title.setText("<娱乐新闻>"); chanel.addContent(title); //4.创建一个XMLOutputter对象 Format format = Format.getCompactFormat(); format.setIndent(""); format.setEncoding("GBK"); format.setEscapeStrategy(null); XMLOutputter output = new XMLOutputter(format); //5.利用output将document对象转换为XML文件 try { output.output(doc, new FileOutputStream(new File("rssnew.xml"))); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { JDOMXML c = new JDOMXML(); c.createXML(); }}
- 字符串xml生成xml文件
- java生成xml文件
- dom4j生成xml文件
- c# 生成 xml 文件
- PHP 生成 XML文件
- C#生成XML文件
- C#生成XML文件
- TinyXML生成xml文件
- 生成一个xml文件
- StAX 生成XML文件
- XML文件生成读入
- 生成xml文件
- tinyxml生成xml文件
- 自动生成xml文件
- jdom生成xml文件
- 【JAVA】生成XML文件
- 生成xml文件例子
- 生成xml文件
- SOAP webserivce 和 RESTful webservice 对比及区别
- html基本基础——图片元素&表单元素
- Hadoop Hive sql语法详解1-认识hive及DDL操作
- [P1082] 同余方程
- Eclipse中配置Python开发环境
- XML文件生成
- 计数排序(Counting Sort)与基数排序(Radix Sort)小结
- 1051. Pop Sequence (25)
- 算法细节系列(21):贪心有理?
- Flex Ethernet
- 浏览器内核渲染引擎渲染原理
- java出现Resource leak: 'input' is never closed 问题
- css选择器以及基础介绍
- Dubbo标签解析