xml文件的读写

原文:http://www.jb51.cc/article/p-vhbgfbbe-ke.html

1,xml文件的读取

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


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

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


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

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

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


DOM实现

  1. importjava.io.File;
  2. importjavax.xml.parsers.DocumentBuilder;
  3. importjavax.xml.parsers.DocumentBuilderFactory;
  4. importorg.w3c.dom.Document;
  5. importorg.w3c.dom.Node;
  6. publicclassdom{
  7. publicstaticvoidmain(Stringargs[])throwsException{
  8. //创建文件解析工厂
  9. DocumentBuilderFactorydfactory=DocumentBuilderFactory.newInstance();
  10. //使用工厂创建文件解析类
  11. DocumentBuilderbuilder=dfactory.newDocumentBuilder();
  12. //开始解析文件,将文件加载进内存,形成dom树
  13. Documentdocument=builder.parse(newFile("test.xml"));
  14. //获取根节点并打印出来
  15. Noderootn=document.getFirstChild();
  16. System.out.println(rootn.getNodeName());
  17. }
  18. }




SAX实现:

    importorg.dom4j.Document;
  1. importorg.dom4j.Element;
  2. importorg.dom4j.io.SAXReader;
  3. publicclasssax{
  4. publicstaticvoidmain(Stringargs[])throwsException{
  5. //创建解析对象
  6. SAXReaderreader=newSAXReader();
  7. //读取xml文件
  8. Documentdocument=reader.read(newFile("test.xml"));
  9. //获取根节点
  10. Elementroote=document.getRootElement();
  11. //获取根节点下面的子节点
  12. Stringchilde=roote.elementText("学生");
  13. System.out.println(roote.getName());
  14. System.out.println(childe);
  15. }



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

SAX实现+xpath

    packagecom.bjpowernode.xml;
  1. importjava.io.File;
  2. importorg.dom4j.Document;
  3. importorg.dom4j.Element;
  4. importorg.dom4j.io.SAXReader;
  5. publicclassSAXandxpath{
  6. publicstaticvoidmain(String[]args)throwsException{
  7. Documentdocument=reader.read(newFile("test.xml"));
  8. Stringxpath="/test/学生";
  9. Elementelement=(Element)document.selectSingleNode(xpath);
  10. System.out.println(element.getText());
  11. }

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






2,xml文件的写入

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

    importjava.io.FileWriter;
  1. importorg.dom4j.DocumentHelper;
  2. importorg.dom4j.io.OutputFormat;
  3. importorg.dom4j.io.XMLWriter;
  4. publicclassdomwrite{
  5. //创建一个文档对象
  6. Documentdocument=DocumentHelper.createDocument();
  7. //构造dom树
  8. Elementroote=document.addElement("学生信息");
  9. Elementchile=roote.addElement("学生");
  10. chile.addAttribute("id","1");
  11. chile.setText("shuangzhe");
  12. Elementchile1=roote.addElement("学生");
  13. chile1.addAttribute("id","2");
  14. chile1.setText("litongxue");
  15. //设置字符编码方式
  16. OutputFormatformat=OutputFormat.createPrettyPrint();
  17. format.setEncoding("GB18030");
  18. //开始写
  19. XMLWriterxmlWriter=newXMLWriter(newFileWriter("student.xml"),format);
  20. xmlWriter.write(document);
  21. xmlWriter.close();
  22. }


写入后的文件内容

[html]
    <?xmlversion="1.0"encoding="GB18030"?>
  1. <学生信息>
  2. <学生id="1">shuangzhe</学生>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇