使用dom4j对xml文件进行读取和输出操作

时间:2021-03-11 22:02:36

1.xml文件的读取

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


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

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


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

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

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


2.我们来看一个案例,首先是对maven的pom文件配置

   <dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1-beta-11</version>
<exclusions>
<exclusion>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>


2.对xml文件的读取
File file=new File(SourceFilePath);
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(file);
//获取某一个节点
Node nodeVersion=document.selectSingleNode("//Info/Version");
//取得该节点的值
String text=nodeVersion.getText();
//获取多个节点
List<Element> list=document.selectNodes("//Info/Files/File");
//进行循环
for(int i=0;i<list.size();i++){
Element element=list.get(i);
Element nElement=element.element("Name");
}
3.对xml文件进行输出

将生成的document转换为xml文件格式输入到指定路径可以使用下面的方法进行
OutputFormat format = OutputFormat.createPrettyPrint();
//输出到指定目录
XMLWriter writer = new XMLWriter(new FileOutputStream(destFilePath),format);
writer.write(document);
writer.close();





相关文章