xml文件学习

转载 2016年08月30日 15:11:25

1,xml文件的读取

    读取xml文件的方式有两种,一种是面向模型的DOM方式,一种是面向事件的SAX方式


    DOM方式原理:一次性的将xml文档加入内存,在内存中形成一颗dom树,然后通过语言对树的节点进行操作。

   显然这种操作查找元素快,但是一次性的将文件加载进来,要是小还行,文件大的时候会增大内存负担的,因此这种方式最好是解析小的xml文件的时候用


   SAX方式原理:边读边解析,按照从做往右从上往下的顺序解析。

   由于解析过的节点不能再次利用,要想使用还得再次解析,所以效率相对来说比较低,但只有事件触发了才会去读取文件,所以内存不会很大。

   两种方式,各有优缺点,谁也不能代替谁,举个简单的例子吧,就像生活中的自行车无法取代汽车,汽车无法取代自行车一样,两者各有优势。根据具体需求选择。


  DOM实现

  1. import java.io.File;  
  2. import javax.xml.parsers.DocumentBuilder;  
  3. import javax.xml.parsers.DocumentBuilderFactory;  
  4. import org.w3c.dom.Document;  
  5. import org.w3c.dom.Node;  
  6.   
  7.   
  8. public class dom{  
  9.     public static void main(String args[])throws Exception{  
  10.         //创建文件解析工厂  
  11.         DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();  
  12.   
  13.   
  14.         //使用工厂创建文件解析类  
  15.         DocumentBuilder builder = dfactory.newDocumentBuilder();  
  16.   
  17.   
  18.         //开始解析文件,将文件加载进内存,形成dom树  
  19.         Document document = builder.parse(new File("test.xml"));  
  20.           
  21.           
  22.         //获取根节点并打印出来  
  23.         Node rootn = document.getFirstChild();  
  24.         System.out.println(rootn.getNodeName());  
  25.     }  
  26. }  




    SAX实现:

   

  1. import java.io.File;  
  2. import org.dom4j.Document;  
  3. import org.dom4j.Element;  
  4. import org.dom4j.io.SAXReader;  
  5.   
  6.   
  7. public class sax{  
  8.     public static void main(String args[])throws Exception{  
  9.         //创建解析对象  
  10.         SAXReader reader = new SAXReader();  
  11.   
  12.   
  13.         //读取xml文件  
  14.         Document document = reader.read(new File("test.xml"));  
  15.   
  16.   
  17.         //获取根节点  
  18.         Element roote = document.getRootElement();  
  19.         //获取根节点下面的子节点  
  20.         String childe = roote.elementText("学生");  
  21.         System.out.println(roote.getName());  
  22.         System.out.println(childe);  
  23.     }  
  24. }  



    注意:需要导入dom4j的jar包,如果不使用工具需要配置classpath环境变量才能使用jar。
       如果有多个学生标签,会返回第一个标签的内容。

 

   SAX实现+xpath

  1. package com.bjpowernode.xml;  
  2.   
  3.   
  4. import java.io.File;  
  5.   
  6.   
  7. import org.dom4j.Document;  
  8. import org.dom4j.Element;  
  9. import org.dom4j.io.SAXReader;  
  10.   
  11. public class SAXandxpath {  
  12.     public static void main(String[] args) throws Exception{  
  13.           
  14.         SAXReader reader = new SAXReader();  
  15.         Document document = reader.read(new File("test.xml"));  
  16.         String xpath = "/test/学生";  
  17.         Element element = (Element)document.selectSingleNode(xpath);  
  18.         System.out.println(element.getText());  
  19.     }  
  20. }  

    使用xpath达到快速定位的效果。使用时需要导入相应的jar包




2,xml文件的写入

   Dom方式:使用dom方式写入xml文件(基于dom4j)

  1. import java.io.FileWriter;  
  2. import org.dom4j.Document;  
  3. import org.dom4j.DocumentHelper;  
  4. import org.dom4j.Element;  
  5. import org.dom4j.io.OutputFormat;  
  6. import org.dom4j.io.XMLWriter;  
  7.   
  8.   
  9. public class domwrite{  
  10.     public static void main(String args[])throws Exception{  
  11.         //创建一个文档对象  
  12.         Document document  = DocumentHelper.createDocument();  
  13.   
  14.   
  15.         //构造dom树  
  16.         Element roote = document.addElement("学生信息");  
  17.         Element chile = roote.addElement("学生");  
  18.         chile.addAttribute("id","1");  
  19.         chile.setText("shuangzhe");  
  20.         Element chile1 = roote.addElement("学生");  
  21.         chile1.addAttribute("id","2");  
  22.         chile1.setText("litongxue");  
  23.   
  24.   
  25.           
  26.         //设置字符编码方式  
  27.         OutputFormat format = OutputFormat.createPrettyPrint();  
  28.         format.setEncoding("GB18030");  
  29.   
  30.   
  31.         //开始写  
  32.         XMLWriter xmlWriter = new XMLWriter(new FileWriter("student.xml"),format);  
  33.         xmlWriter.write(document);  
  34.         xmlWriter.close();  
  35.     }  
  36. }  


写入后的文件内容

  1. <?xml version="1.0" encoding="GB18030"?>  
  2. <学生信息>  
  3.   <学生 id="1">shuangzhe</学生>  
  4.   <学生 id="2">litongxue</学生>  
  5. </学生信息> 

jdom学习读取xml文件

  • 2014年10月08日 21:58
  • 17KB
  • 下载

一步步学习SPD2010--第六章节--处理数据源(3)--连接一个RSS Feed XML文件

一步步学习SPD2010--第六章节--处理数据源(3)--连接一个RSS Feed XML文件

简单XML文件学习实践

  • 2009年12月06日 15:40
  • 767B
  • 下载

Java之DOM4J方式生成XML文件(学习笔记)

使用DOM4J方式生成XML文件,不是java官方提供的方法,所以我们的需要自己导入一个dom4j-1.6.1.jar包,我们可以去官网下载。         样例代码: package com....

XML文件学习资料

  • 2013年02月27日 10:42
  • 703KB
  • 下载

XML文件解析PULL方法的学习

  • 2014年08月23日 14:54
  • 1.31MB
  • 下载

MyBatis Mapper XML文件详解 - 映射和参数 ——学习

MyBatis 的真正强大在于它的映射语句,也是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% ...

Android 个人学习笔记之--- Pull解析XML文件

1.Pull简介 Pull解析器是Android系统内置的的,Pull解析器与SAX解析器类似,他提供了类似的事件,如开始元素和介绍元素的事件,使用parser.next()可以进入下一个元素并触发相...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:xml文件学习
举报原因:
原因补充:

(最多只允许输入30个字)