码迷,mamicode.com
首页 > 编程语言 > 详细

Java demo之Java操作XML

时间:2016-12-28 13:00:26      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:java   redis   shiro   maven   druid   

 Java是一门高级编程语言,自然少不了对各种文件进行操作的功能。现在笔者就来写一个操作XML的demo供大家参考和学习。首先要知道Java对XML操作的方式并非只有一种,那么究竟哪种方式更高效,哪种方式更适用或主流呢?Java主要有四种方式操作XML文件,下面我们就用代码下载来看一看,比较一下。 
    以下是Java创建XML文件的四种主流方式。 

Java代码   技术分享

  1. public class CreateTest {  

  2.   

  3.     /** 

  4.      * DOM方式生成xml文档 

  5.      */  

  6.     private void DOMCreateXML() {  

  7.         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();  

  8.         DocumentBuilder db = null;  

  9.         try {  

  10.             db = dbf.newDocumentBuilder();  

  11.         } catch (ParserConfigurationException e) {  

  12.             e.printStackTrace();  

  13.         }  

  14.         Document document = db.newDocument();  

  15.         document.setXmlStandalone(true);  

  16.         Element bookstore = document.createElement("bookStore");  

  17.         Element book = document.createElement("book");  

  18.         Element name = document.createElement("name");  

  19.         name.setTextContent("小王子");  

  20.         book.appendChild(name);  

  21.         book.setAttribute("id""1");  

  22.         bookstore.appendChild(book);  

  23.         document.appendChild(bookstore);  

  24.         TransformerFactory tff = TransformerFactory.newInstance();  

  25.         try {  

  26.             Transformer tf = tff.newTransformer();  

  27.             tf.setOutputProperty(OutputKeys.INDENT, "yes");  

  28.             tf.transform(new DOMSource(document), new StreamResult(new File(  

  29.                     "books1.xml")));  

  30.         } catch (TransformerConfigurationException e) {  

  31.             e.printStackTrace();  

  32.         } catch (TransformerException e) {  

  33.             e.printStackTrace();  

  34.         }  

  35.     }  

  36.       

  37.     /** 

  38.      * SAX方式生成xml文档 

  39.      */  

  40.     public void SAXCreateXML() {  

  41.         SAXTransformerFactory tff = (SAXTransformerFactory) SAXTransformerFactory  

  42.                 .newInstance();  

  43.         try {  

  44.             TransformerHandler handler = tff.newTransformerHandler();  

  45.             Transformer tr = handler.getTransformer();  

  46.             tr.setOutputProperty(OutputKeys.ENCODING, "UTF-8");  

  47.             tr.setOutputProperty(OutputKeys.INDENT, "yes");  

  48.             File f = new File("books2.xml");  

  49.             if (!f.exists()) {  

  50.                 f.createNewFile();  

  51.             }  

  52.             Result result = new StreamResult(new FileOutputStream(f));  

  53.             handler.setResult(result);  

  54.             handler.startDocument();  

  55.             AttributesImpl attr = new AttributesImpl();  

  56.             handler.startElement("""""bookstore", attr);  

  57.             attr.clear();  

  58.             attr.addAttribute("""""id""""1");  

  59.             handler.startElement("""""book", attr);  

  60.             attr.clear();  

  61.             handler.startElement("""""name", attr);  

  62.             handler.characters("小王子".toCharArray(), 0"小王子".length());  

  63.             handler.endElement("""""name");  

  64.           

  65.             handler.endElement("""""book");  

  66.             handler.endElement("""""bookstore");  

  67.             handler.endDocument();  

  68.   下载

  69.         } catch (TransformerConfigurationException e) {  

  70.             e.printStackTrace();  

  71.         } catch (FileNotFoundException e) {  

  72.             e.printStackTrace();  

  73.         } catch (IOException e) {  

  74.             e.printStackTrace();  

  75.         } catch (SAXException e) {  

  76.             e.printStackTrace();  

  77.         }  

  78.     }  

  79.       

  80.     /** 

  81.      * JDOM方式生成xml文档 

  82.      */  

  83.     private void JDOMCreateXML() {  

  84.         org.jdom2.Element bookstore = new org.jdom2.Element("bookstore");  

  85.         org.jdom2.Document document = new org.jdom2.Document(bookstore);  

  86.           

  87.         org.jdom2.Element book = new org.jdom2.Element("book");  

  88.         book.setAttribute("id""1");  

  89.         org.jdom2.Element name = new org.jdom2.Element("name");  

  90.         name.setText("小王子");  

  91.         book.addContent(name);  

  92.         bookstore.addContent(book);  

  93.         Format format = Format.getCompactFormat();  

  94.         format.setIndent("");  

  95.         format.setEncoding("UTF-8");  

  96.         XMLOutputter outputer = new XMLOutputter(format);  

  97.         try {  

  98.             outputer.output(document, new FileOutputStream(new File("books3.xml")));  

  99.         } catch (FileNotFoundException e) {  

  100.             e.printStackTrace();  

  101.         } catch (IOException e) {  

  102.             e.printStackTrace();  

  103.         }  

  104.     }  

  105.       

  106.     /** 

  107.      * DOM4J方式生成xml文档 

  108.      */  

  109.     private void DOM4JCreateXML(){  

  110.         org.dom4j.Document document = DocumentHelper.createDocument();  

  111.         org.dom4j.Element bookstore = document.addElement("bookstore");  

  112.         org.dom4j.Element book = bookstore.addElement("book");  

  113.         book.addAttribute("id""1");  

  114.         org.dom4j.Element name = book.addElement("name");  

  115.         name.setText("小王子");  

  116.         OutputFormat format = OutputFormat.createPrettyPrint();  

  117.         format.setEncoding("UTF-8");  

  118.         File file = new File("books4.xml");  

  119.         XMLWriter writer;  

  120.         try {  

  121.             writer = new XMLWriter(new FileOutputStream(file), format);  

  122.             writer.setEscapeText(false);  

  123.             writer.write(document);  

  124.             writer.close();  

  125.         } catch (IOException e) {  

  126.             e.printStackTrace();  

  127.         }  

  128.     }  下载

  129.       

  130.     @Test  

  131.     public void testPerformance() throws Exception{  

  132.         System.out.println("性能测试:");  

  133.         //测试DOM的性能:  

  134.         long start = System.currentTimeMillis();  

  135.         DOMCreateXML();  

  136.         System.out.println("DOM:"+ (System.currentTimeMillis() - start));  

  137.         //测试SAX的性能:  

  138.         start = System.currentTimeMillis();  

  139.         SAXCreateXML();  

  140.         System.out.println("SAX:"+ (System.currentTimeMillis() - start) );  

  141.         //测试JDOM的性能:  

  142.         start = System.currentTimeMillis();  

  143.         JDOMCreateXML();  

  144.         System.out.println("JDOM:"+ (System.currentTimeMillis() - start) );  

  145.         //测试DOM4J的性能:  

  146.         start = System.currentTimeMillis();  

  147.         DOM4JCreateXML();  

  148.         System.out.println("DOM4J:"+ (System.currentTimeMillis() - start) );  

  149.     }  

  150. }  


现在笔者贴出控制台输出信息: 
性能测试: 
DOM:68 
SAX:4 
JDOM:78 
DOM4J:60 
    由此可得出创建XML文件的速度排名:SAX下载 > DOM4J > DOM > JDOM 
    在速度上我们明显可以看出SAX的巨大优势,其次是DOM4J 和DOM ,在性能上笔者推荐使用SAX,其次可以考虑DOM4J 和DOM,而JDOM性能上劣势较为明显,不建议使用 
    另外,作为一名程序员(开发者),代码量和代码复杂度也是值得考量的因素。在这一点上笔者推荐使用DOM4J 
    综合以上两点,笔者推荐使用SAX和DOM4J进行对XML文件的操作更为适用,而且这两种方式也是被大众所推崇的主流方式。 
    但是,以上代码分析仅仅是从创建XML文件上作出的简单分析,而且是创建一个很简单的数据量极小的XML文件。所以并不能给出总结性的结论说明哪种方式一定是最好的


Java demo之Java操作XML

标签:java   redis   shiro   maven   druid   

原文地址:http://12465640.blog.51cto.com/12455640/1886765

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!