Dom4j 解析 XML文件
使用Dom4j 来创建 读取 修改 删除 打印 格式化 XML文档
import java.io.File;
import java.io.FileWriter;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;public class Dom4jDemo {/** Creates a new instance of Dom4jDemo */public Dom4jDemo() {}/***The method createXML*建立一个XML文档,文档名由输入属性决定filename 需建立的文件名返回操作结果*/public boolean createXML(String fileName){boolean isOk = false;//建立document对象Document doc = DocumentHelper.createDocument();//建立XML文档的根booksElement books = doc.addElement("books");books.addComment("This is a test for dom4j");//加入一行注释Element book = books.addElement("book");//加入第一个book节点book.addAttribute("show", "yes");//加入show属性内容Element title = book.addElement("title");//加入title节点title.setText("Dom4j Tutorials");//为title设置内容/**加入第二个book节点*/book = books.addElement("book");book.addAttribute("show", "yes");title = book.addElement("title");title.setText("Lucene Studing");/**加入第三个book节点*/book = books.addElement("book");book.addAttribute("show", "no");title = book.addElement("title");title.setText("Lucene in Action");/**加入owner节点*/Element owner = books.addElement("owner");owner.setText("O'Reilly");/***将doc中的内容写入xml文件中**/try{FileWriter file = new FileWriter(new File(fileName));XMLWriter writer = new XMLWriter(file);writer.write(doc);writer.close();isOk = true;}catch(Exception e){e.printStackTrace();}return isOk;}/***the method modifigXML* 如果book节点中show属性的内容为yes,则修改成no* 把owner项内容改为Tshinghua,并添加date节点* 若title内容为Dom4j Tutorials,则删除该节点*/public boolean modifigXML(String oldFileName,String newFileName){boolean isOk = false;try{SAXReader reader = new SAXReader();Document doc = reader.read(new File(oldFileName));/**修改内容之一: 如果book节点中show属性的内容为yes,则修改成no*/List list = doc.selectNodes(" /books/book/@show ");Iterator iter = list.iterator();while(iter.hasNext()){Attribute attr = (Attribute)iter.next();if(attr.getValue().equals("yes"))attr.setValue("no");}/***修改内容之二: 把owner项内容改为Tshinghua*并在owner节点中加入date节点,* date节点的内容为2004-09-11,* 还为date节点添加一个属性type*/list = doc.selectNodes("/books/owner");iter = list.iterator();if(iter.hasNext()){Element owner = (Element)iter.next();owner.setText("Tshinghua");Element date = owner.addElement("date");date.setText("2006-07-30");date.addAttribute("type", "Gregorian calendar");}/**修改内容之三: 若title内容为Dom4j Tutorials,则删除该节点*/list = doc.selectNodes("/books/book");iter = list.iterator();while(iter.hasNext()){Element elem = (Element)iter.next();Iterator iterElem = elem.elementIterator("title");if(iterElem.hasNext()){Element remTitle = (Element)iterElem.next();if(remTitle.getText().trim().equals("Dom4j Tutorials"))elem.remove(remTitle);}}//将doc中的内容写入文件中try{FileWriter newFile = new FileWriter(new File(newFileName));XMLWriter newWriter = new XMLWriter(newFile);newWriter.write(doc);newWriter.close();}catch(Exception e){e.printStackTrace();}isOk = true;}catch(Exception e){e.printStackTrace();}return isOk;}/***the method formatXML*-------------------------*默认的输出方式为紧凑方式,默认编码为UTF-8,* 但对于我们的应用而言,一般都要用到中文,* 并且希望显示时按自动缩进的方式的显示,这就需用到OutputFormat类。*/public boolean formatXML(String fileName){boolean isOk = false;try{SAXReader reader = new SAXReader();Document doc = reader.read(new File(fileName));XMLWriter formatWriter = null;/***格式化输出,类型IE浏览一样*指定XML编码*/OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("gb2312");formatWriter = new XMLWriter(new FileWriter(new File(fileName)), format);formatWriter.write(doc);formatWriter.close();isOk = true;}catch(Exception e){e.printStackTrace();}return isOk;}/***the method readXML*/public void readXML(String fileName){try{SAXReader reader = new SAXReader();Document doc = reader.read(new File(fileName));List list = doc.selectNodes("/books/book");Iterator iter = list.iterator();while(iter.hasNext()){Element book = (Element)iter.next();Iterator title = book.elementIterator("title");if(title.hasNext()){Element elemTitle = (Element)title.next();System.out.print("Title: "+elemTitle.getText());System.out.print(" Show: "+book.attributeValue("show")+"\n");}}list = doc.selectNodes("/books/owner");iter = list.iterator();if(iter.hasNext()){Element owner = (Element)iter.next();System.out.println("Owner: "+owner.getText());System.out.println("Date: "+owner.elementText("date"));}}catch(Exception e){e.printStackTrace();}}/*Title: Dom4j Tutorials Show: yesTitle: Lucene Studing Show: yesTitle: Lucene in Action Show: noOwner: O'ReillyDate: null*//***the method main*/public static void main(String[] args){long start = System.currentTimeMillis();//开始计时Dom4jDemo dom4jDemo = new Dom4jDemo();String fileName = "dom4jDemo.xml";String newFileName = "new_dom4jDemo.xml";System.out.println(fileName+"正在创建中...");boolean isOk_create = dom4jDemo.createXML(fileName);if(isOk_create) System.out.println(fileName+"创建成功!");else System.out.println("创建失败!请检查后重新再试!");System.out.println("正在更新中...");boolean isOk_modi = dom4jDemo.modifigXML(fileName, newFileName);if(isOk_modi) System.out.println("恭喜,更新完成!");else System.out.println("更新失败!请检查后重新再试!");System.out.println("正在格式化中...");boolean isOk_format = dom4jDemo.formatXML(fileName);if(isOk_format) System.out.println("恭喜,格式化完成!");else System.out.println("格式化失败!请检查后重新再试!");System.out.println("正在读取文件 "+fileName+" ...");System.out.println("------------------------------------------------");dom4jDemo.readXML(fileName);System.out.println("------------------------------------------------");System.out.println(fileName+"读取成功!");System.out.println("正在读取文件 "+newFileName+" ...");System.out.println("------------------------------------------------");dom4jDemo.readXML(newFileName);System.out.println("------------------------------------------------");System.out.println(fileName+"读取成功!");System.out.println("一共耗时: "+(System.currentTimeMillis()-start)+"毫秒!");}
}
Dom4j 解析 XML文件相关推荐
- java dom xml 换行,dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件...
网友求助:dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件 问题importjava.text.SimpleDateFormat; import ...
- 使用dom4j解析XML文件
为什么80%的码农都做不了架构师?>>> dom4j是一个java 的XML API,用来读写XML文件. 使用dom4j解析XML文件,首先需要在官网下载dom4j-1.6. ...
- Dom4j解析Xml文件,Dom4j创建Xml文件
Dom4j解析Xml文件,Dom4j创建Xml文件 >>>>>>>>>>>>>>>>>>&g ...
- 使用DOM4J解析XML文件代码
DOM4J解析XML文件 public class DOM4JTest1 {public static void main(String[] args) throws DocumentExceptio ...
- Java中DOM4J解析xml文件浅析
DOM4J解析它是JDOM的一种智能分支.它合并了许多超出基本XML文档表示的功能,包括集成的XPath支持.XML Schema支持以及用于大文档或流化文档的基于事件的处理.它还提供了构建文档表 ...
- 一、dom4j技术--使用dom4j解析xml文件
dom4j解析xml文件 一.导包,编写bean类和测试类 二.编码测试,通过dom4j生成bean对象 books.xml <?xml version="1.0" enco ...
- java jdom dom4j_Java基础系列17:使用DOM、SAX、JDOM、DOM4J解析XML文件详解
一 简介 在Java中,可以使用多种方式来解析XML文件,其中最常见的可能就是DOM.SAX.JDOM.DOM4J这四种方式了.其中,DOM和SAX这两种解析XML文件的方式有jdk自带的API,因此 ...
- dom4j解析xml文件
一.用SAXReader 方式解析:实例测试类TestXML package * import java.io.ByteArrayInputStream; import java.util ...
- Java - DOM4J解析XML文件
文章目录 1. XML文档说明 2. XML解析 2.1 常见的解析方式 2.2 DOM4J解析xml 2.3 XPath表达式解析XML 3. 解析XML并封装到类中 4. 参考资料 1. XML文 ...
- java使用DOM4j解析XML文件
1.简介 dom4j是java中的XML API,性能优异.功能强大.开放源代码. 也是所有解析XML文件方法中最常用的! 2.代码实操 准备需要j的ar包添加到lib目录下,dom4j-2.1.1. ...
最新文章
- 67 个节省开发者时间的实用工具、库与资源(前端向)
- 函数粘合云服务提供端到端解决方案
- mysql数据万能导入工具下载_mysql数据导入工具下载 - 数据导入工具(EMS Data Export for MySQL) v3.7.0多语特别版下载 - 第九软件网...
- boost::mp11::mp_map_insert相关用法的测试程序
- mybatis jar包_springboot2整合mybatis-plus3踩到的坑
- java批处理 异常处理_Java批处理教程
- php.ini用哪个,php.ini:哪一个?
- 闪灵短链-微信QQ域名防拦截系统 v1.0
- 数据交互什么意思_学习编程怎么样才可以不枯燥?什么是前端语言?
- Gentoo学习笔记
- 关于使用 autoFac 的注入方法
- 美国国际集团(AIG-American International Group)
- 常用医学科研软件有哪些?
- 金山对雅虎助手的测试报告
- 以Maya为引擎的小游戏:是男Yin就坚持2K帧
- SQLMAP参数中文详解(看过来)!
- neural networks logistic regression 神经网络逻辑回归
- 程序员python表白代码
- 如何零基础入门仿真 - version 2
- 关于计算机声音说法正确的是,realplayer插件 声音数字化|74数字化声音试题(9)
热门文章
- Symantec 卸载密码方法
- dou+账户余额怎么提现
- 一篇文章带你搞定19年数学建模机场出租车优化问题示例讲解含代码
- [MySQL光速入门]004 作业解答
- Windows App开发之更多技巧
- java毕业生设计新城街道社区的健康档案管理平台计算机源码+系统+mysql+调试部署+lw
- 有8匹马,只有四个赛道,如何挑出前三名?
- javafx 教程_JavaFX技巧6:使用透明颜色
- 关机程序C语言(快来整蛊你的小伙伴吧)
- ## ***电池SOC仿真系列-基于扩展卡尔曼(EKF)算法的SOC估计(内含代码等资料)***