读取xml文件的方式

前端之家收集整理的这篇文章主要介绍了读取xml文件的方式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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实现:

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



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

SAX实现+xpath

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

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




2,xml文件的写入

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

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


写入后的文件内容

  1. <?xmlversion="1.0"encoding="GB18030"?>
  2. <学生信息>
  3. <学生id="1">shuangzhe</学生>
  4. <学生id="2">litongxue</学生>
  5. </学生信息>
原文链接:https://www.f2er.com/xml/295390.html

猜你在找的XML相关文章