Dom4j操作xml文件
2015-09-25 14:02
453 查看
操作环境:Exclipse luna +dom4j-1.6.1+java
操作xml文件,很早就做过了,今天又重新写了一个小样,来整理一下。
首先,我们用java来操作xml文件,一般有两种方式。一种是DOM, 另一种是SAX. SAX 和DOM 在实现过程中,分别侧重于不同的方法满足不同的需求。
其中,Dom的优点在于可以实现随机访问,其原理在于dom会将文档的逻辑结构(包括文档的根、元素、元素内容、属性、属性值)等都以对象模型的形式保存到内存中,所以可以以任何顺序来访问xml元素。而Sax是提供了对xml文档的顺序访问模式,这种模式的好处之一是访问速度很快,它是基于事件的,不需要全部加载到内存,所以所需的系统资源较少,可以用来分析大型的xml文档,比较高效。
【我们这里演示的是第一种方式。】
按照惯例,我们首先强调几个可能会出现的问题。
1.记得导入dom4j的jar包。
2.在写xml文档的时候,可能会出现中文乱码问题,这一点的解决方式有多种,附一篇笔者看到的文档,很详细。
/article/8051944.html
3.如果解析文档的路径使用的是相对路径,建议放到与java文件同一个包下。
供解析的xml文档:
解析的效果图:
5.测试生成的xml文档的效果图,默认放在D盘根目录下
6.下面上干货
package com.sinotimes.soft.xml;
import java.security.KeyStore.Entry.Attribute;
import java.util.List;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import javax.sql.rowset.spi.XmlWriter;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.w3c.dom.NodeList;
public class xmlTest {
//构造函数
public void xmlTest(){
}
操作xml文件,很早就做过了,今天又重新写了一个小样,来整理一下。
首先,我们用java来操作xml文件,一般有两种方式。一种是DOM, 另一种是SAX. SAX 和DOM 在实现过程中,分别侧重于不同的方法满足不同的需求。
其中,Dom的优点在于可以实现随机访问,其原理在于dom会将文档的逻辑结构(包括文档的根、元素、元素内容、属性、属性值)等都以对象模型的形式保存到内存中,所以可以以任何顺序来访问xml元素。而Sax是提供了对xml文档的顺序访问模式,这种模式的好处之一是访问速度很快,它是基于事件的,不需要全部加载到内存,所以所需的系统资源较少,可以用来分析大型的xml文档,比较高效。
【我们这里演示的是第一种方式。】
按照惯例,我们首先强调几个可能会出现的问题。
1.记得导入dom4j的jar包。
2.在写xml文档的时候,可能会出现中文乱码问题,这一点的解决方式有多种,附一篇笔者看到的文档,很详细。
/article/8051944.html
3.如果解析文档的路径使用的是相对路径,建议放到与java文件同一个包下。
供解析的xml文档:
解析的效果图:
5.测试生成的xml文档的效果图,默认放在D盘根目录下
6.下面上干货
package com.sinotimes.soft.xml;
import java.security.KeyStore.Entry.Attribute;
import java.util.List;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import javax.sql.rowset.spi.XmlWriter;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.w3c.dom.NodeList;
public class xmlTest {
//构造函数
public void xmlTest(){
} //解析xml public void readXml(){ SAXReader saxReader = new SAXReader(); try { Document document = saxReader.read(new File("NewFile.xml")); //获取根元素 Element root = document.getRootElement(); List <Element> childNode = root.elements(); if(childNode !=null){ for(int i=0;i<childNode.size();i++){ System.out.println("----这是第"+i+"本书的信息----"); Element book = childNode.get(i); System.out.println("类别:"+book.attributeValue("category")); System.out.println("书籍名称:"+book.elementText("name")); System.out.println("价格:"+book.elementText("price")); System.out.println("出版社:"+book.elementText("publisher")); } } } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //写xml public void createXml() { String nameStr,weighStr,tallStr; //创建文档对象 Document document = DocumentHelper.createDocument(); Element root = document.addElement("students"); for(int i=0;i<4;i++){ if(i==0){ nameStr = "李明"; weighStr = "65kg"; tallStr = "178cm"; }else if(i==1){ nameStr = "张磊"; weighStr = "70kg"; tallStr = "183cm"; }else if(i==2){ nameStr = "刘潇潇"; weighStr = "53kg"; tallStr = "168cm"; }else{ nameStr = "赵媛媛"; weighStr = "55kg"; tallStr = "172cm"; } Element student = root.addElement("student"); student.addAttribute("ID", "学生"+i); student.addElement("name",nameStr); student.addElement("weight",weighStr); student.addElement("tall",tallStr); } try { Writer fileWriter = new FileWriter("D:\\student.xml"); OutputFormat format = OutputFormat.createPrettyPrint(); //控制显示xml元素换行,为了美观作用 format.setEncoding("gb2312"); XMLWriter xmlWriter = new XMLWriter(fileWriter,format); xmlWriter.write(document); xmlWriter.close(); System.out.println("create end!"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String args[]) throws Exception{ xmlTest mXMLTest = new xmlTest(); //解析xml // mXMLTest.readXml(); //生成xml mXMLTest.createXml(); }
}
相关文章推荐
- 433MHz(CC1101)与zigbee (CC2530)对比测试
- 百度空间迁移了,转战CSDN
- const 详解(修饰变量、输入参数、返回值、成员函数)
- [Cocos2d-x 升级IOS9错误解决方案]Invalid Bundle.iPad Multitasking support requires these orientations:XXX
- 黑马程序员—java技术blog—第六篇面向对象_多态概述及基础应用
- 《暗时间》读书笔记与读后感(二)
- 栈的压入、弹出序列
- 高通msm8994性能及温度监测脚本
- 关于js动态向下拉列表中添加数据
- 通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作
- 为什么放弃WebView 而 使用 crosswalk!
- 使用nexus创建maven私有仓库
- 通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作
- 使用nexus创建maven私有仓库
- 移动端网络游戏服务器架构
- JavaScript高级程序设计之JavaScript实现 第1.2讲笔记
- Android加载不同DPI资源与内存消耗之间的关系
- PHP错误日志控制
- PHP错误日志控制
- c++基础---构造(析构)函数