xml文件的读写
发布时间:2020-12-16 07:39:07 所属栏目:百科 来源:网络整理
导读:1,xml文件的读取 读取xml文件的方式有两种,一种是面向模型的DOM方式,一种是面向事件的SAX方式 DOM方式原理 :一次性的将xml文档加入内存,在内存中形成一颗dom树,然后通过语言对树的节点进行操作。 显然这种操作查找元素快,但是一次性的将文件加载进来
1,xml文件的读取读取xml文件的方式有两种,一种是面向模型的DOM方式,一种是面向事件的SAX方式
DOM方式原理:一次性的将xml文档加入内存,在内存中形成一颗dom树,然后通过语言对树的节点进行操作。 显然这种操作查找元素快,但是一次性的将文件加载进来,要是小还行,文件大的时候会增大内存负担的,因此这种方式最好是解析小的xml文件的时候用
SAX方式原理:边读边解析,按照从做往右从上往下的顺序解析。 由于解析过的节点不能再次利用,要想使用还得再次解析,所以效率相对来说比较低,但只有事件触发了才会去读取文件,所以内存不会很大。 两种方式,各有优缺点,谁也不能代替谁,举个简单的例子吧,就像生活中的自行车无法取代汽车,汽车无法取代自行车一样,两者各有优势。根据具体需求选择。 DOM实现:
import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Node; public class dom{ public static void main(String args[])throws Exception{ //创建文件解析工厂 DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance(); //使用工厂创建文件解析类 DocumentBuilder builder = dfactory.newDocumentBuilder(); //开始解析文件,将文件加载进内存,形成dom树 Document document = builder.parse(new File("test.xml")); //获取根节点并打印出来 Node rootn = document.getFirstChild(); System.out.println(rootn.getNodeName()); } }
SAX实现:
import java.io.File; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class sax{ public static void main(String args[])throws Exception{ //创建解析对象 SAXReader reader = new SAXReader(); //读取xml文件 Document document = reader.read(new File("test.xml")); //获取根节点 Element roote = document.getRootElement(); //获取根节点下面的子节点 String childe = roote.elementText("学生"); System.out.println(roote.getName()); System.out.println(childe); } }
注意:需要导入dom4j的jar包,如果不使用工具需要配置classpath环境变量才能使用jar。 如果有多个学生标签,会返回第一个标签的内容。 SAX实现+xpath
package com.bjpowernode.xml; import java.io.File; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class SAXandxpath { public static void main(String[] args) throws Exception{ SAXReader reader = new SAXReader(); Document document = reader.read(new File("test.xml")); String xpath = "/test/学生"; Element element = (Element)document.selectSingleNode(xpath); System.out.println(element.getText()); } } 使用xpath达到快速定位的效果。使用时需要导入相应的jar包 2,xml文件的写入Dom方式:使用dom方式写入xml文件(基于dom4j) import java.io.FileWriter; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; public class domwrite{ public static void main(String args[])throws Exception{ //创建一个文档对象 Document document = DocumentHelper.createDocument(); //构造dom树 Element roote = document.addElement("学生信息"); Element chile = roote.addElement("学生"); chile.addAttribute("id","1"); chile.setText("shuangzhe"); Element chile1 = roote.addElement("学生"); chile1.addAttribute("id","2"); chile1.setText("litongxue"); //设置字符编码方式 OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("GB18030"); //开始写 XMLWriter xmlWriter = new XMLWriter(new FileWriter("student.xml"),format); xmlWriter.write(document); xmlWriter.close(); } } 写入后的文件内容
<?xml version="1.0" encoding="GB18030"?> <学生信息> <学生 id="1">shuangzhe</学生> <学生 id="2">litongxue</学生> </学生信息> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |