加入包

 1 //文件包
 2 import java.io.ByteArrayOutputStream;
 3 import java.io.File;
 4 import java.io.FileWriter;
 5 //工具包
 6 import java.util.Iterator;
 7 import java.util.List;
 8 //dom4j包
 9 import org.dom4j.Attribute;
10 import org.dom4j.Document;
11 import org.dom4j.DocumentHelper;
12 import org.dom4j.Element;
13 import org.dom4j.io.OutputFormat;
14 import org.dom4j.io.SAXReader;
15 import org.dom4j.io.XMLWriter;

1、将XML文件的内容转化为String

 1   /**
 2      * doc2String
 3      * 将xml文档内容转为String
 4      * @return 字符串
 5      * @param document
 6      */
 7    public static String doc2String(Document document)
 8     {
 9       String s = "";
10       try
11        {
12            //使用输出流来进行转化
13             ByteArrayOutputStream out = new ByteArrayOutputStream();
14            //使用GB2312编码
15             OutputFormat format = new OutputFormat("   ", true, "GB2312");
16             XMLWriter writer = new XMLWriter(out, format);
17             writer.write(document);
18             s = out.toString("GB2312");
19        }catch(Exception ex)
20        {
21             ex.printStackTrace();
22        }
23       return s;
24     }

2、将符合XML格式的String 转化为XML Document

 1  /**
 2      * string2Document
 3      * 将字符串转为Document
 4      * @return
 5      * @param s xml格式的字符串
 6      */
 7    public static Document string2Document(String s)
 8     {
 9        Document doc = null;
10       try
11        {
12             doc = DocumentHelper.parseText(s);
13        }catch(Exception ex)
14        {
15             ex.printStackTrace();
16        }
17       return doc;
18     }

3、将Document对象保存为一个xml文件到本地

 1   /**
 2      * doc2XmlFile
 3      * 将Document对象保存为一个xml文件到本地
 4      * @return true:保存成功   flase:失败
 5      * @param filename 保存的文件名
 6      * @param document 需要保存的document对象
 7      */
 8    public static boolean doc2XmlFile(Document document,String filename)
 9     {
10       boolean flag = true;
11       try
12        {
13             /* 将document中的内容写入文件中 */
14             //默认为UTF-8格式,指定为"GB2312"
15              OutputFormat format = OutputFormat.createPrettyPrint();
16              format.setEncoding("GB2312");
17              XMLWriter writer = new XMLWriter(new FileWriter(new File(filename)),format);
18              writer.write(document);
19              writer.close();
20          }catch(Exception ex)
21          {
22              flag = false;
23              ex.printStackTrace();
24          }
25         return flag;
26     }

4、将xml格式的字符串保存为本地文件,如果字符串格式不符合xml规则,则返回失败

 1   /**
 2      * string2XmlFile
 3      * 将xml格式的字符串保存为本地文件,如果字符串格式不符合xml规则,则返回失败
 4      * @return true:保存成功   flase:失败
 5      * @param filename 保存的文件名
 6      * @param str 需要保存的字符串
 7      */
 8    public static boolean string2XmlFile(String str,String filename)
 9     {
10       boolean flag = true;
11       try
12        {
13           Document doc =   DocumentHelper.parseText(str);
14           flag = doc2XmlFile(doc,filename);
15        }catch (Exception ex)
16        {
17           flag = false;
18           ex.printStackTrace();
19        }
20       return flag;
21     }

5、载入一个xml文档

 1   /**
 2      * load
 3      * 载入一个xml文档
 4      * @return 成功返回Document对象,失败返回null
 5      * @param uri 文件路径
 6      */
 7    public static Document load(String filename)
 8     {
 9        Document document = null;
10       try
11        {
12            SAXReader saxReader = new SAXReader();
13            document = saxReader.read(new File(filename));
14        }
15       catch (Exception ex){
16            ex.printStackTrace();
17        }
18       return document;
19     }

6、演示String保存为xml文件

 1  /**
 2      * xmlWriteDemoByString
 3      * 演示String保存为xml文件
 4      */
 5    public void xmlWriteDemoByString()
 6     {
 7       String s = "";
 8       /** xml格式标题 "<?xml version='1.0' encoding='GB2312'?>" 可以不用写*/
 9        s = "<config>\r\n"
10           +"    <ftp name='DongDian'>\r\n"
11           +"      <ftp-host>127.0.0.1</ftp-host>\r\n"
12           +"      <ftp-port>21</ftp-port>\r\n"
13           +"      <ftp-user>cxl</ftp-user>\r\n"
14           +"      <ftp-pwd>longshine</ftp-pwd>\r\n"
15           +"      <!-- ftp最多尝试连接次数 -->\r\n"
16           +"      <ftp-try>50</ftp-try>\r\n"
17           +"      <!-- ftp尝试连接延迟时间 -->\r\n"
18           +"      <ftp-delay>10</ftp-delay>\r\n"
19           +"   </ftp>\r\n"
20           +"</config>\r\n";
21       //将文件生成到classes文件夹所在的目录里
22        string2XmlFile(s,"xmlWriteDemoByString.xml");
23       //将文件生成到classes文件夹里
24        string2XmlFile(s,"classes/xmlWriteDemoByString.xml");
25     }

7、演示手动创建一个Document,并保存为XML文件

 1  /**
 2      * 演示手动创建一个Document,并保存为XML文件
 3      */
 4    public void xmlWriteDemoByDocument()
 5     {
 6         /** 建立document对象 */
 7          Document document = DocumentHelper.createDocument();
 8         /** 建立config根节点 */
 9          Element configElement = document.addElement("config");
10         /** 建立ftp节点 */
11          configElement.addComment("东电ftp配置");
12          Element ftpElement = configElement.addElement("ftp");
13          ftpElement.addAttribute("name","DongDian");
14         /** ftp 属性配置 */
15          Element hostElement = ftpElement.addElement("ftp-host");
16          hostElement.setText("127.0.0.1");
17          (ftpElement.addElement("ftp-port")).setText("21");
18          (ftpElement.addElement("ftp-user")).setText("cxl");
19          (ftpElement.addElement("ftp-pwd")).setText("longshine");
20          ftpElement.addComment("ftp最多尝试连接次数");
21          (ftpElement.addElement("ftp-try")).setText("50");
22          ftpElement.addComment("ftp尝试连接延迟时间");
23          (ftpElement.addElement("ftp-delay")).setText("10");
24         /** 保存Document */
25          doc2XmlFile(document,"classes/xmlWriteDemoByDocument.xml");
26     }

8、演示读取文件的具体某个节点的值

 1  /**
 2      *   演示读取文件的具体某个节点的值
 3      */
 4    public static void xmlReadDemo()
 5     {
 6        Document doc = load("classes/xmlWriteDemoByDocument.xml");
 7       //Element root = doc.getRootElement();
 8       /** 先用xpath查找所有ftp节点 并输出它的name属性值*/
 9        List list = doc.selectNodes("/config/ftp" );
10        Iterator it = list.iterator();
11       while(it.hasNext())
12        {
13            Element ftpElement = (Element)it.next();
14            System.out.println("ftp_name="+ftpElement.attribute("name").getValue());
15        }
16       /** 直接用属性path取得name值 */
17        list = doc.selectNodes("/config/ftp/@name" );
18        it = list.iterator();
19       while(it.hasNext())
20        {
21            Attribute attribute = (Attribute)it.next();
22            System.out.println("@name="+attribute.getValue());
23        }
24       /** 直接取得DongDian ftp的 ftp-host 的值 */
25        list = doc.selectNodes("/config/ftp/ftp-host" );
26        it = list.iterator();
27        Element hostElement=(Element)it.next();
28        System.out.println("DongDian's ftp_host="+hostElement.getText());
29     }

 

 

 

 

 

转载于:https://www.cnblogs.com/macula/archive/2012/07/31/2617195.html

Java操作XML文件 dom4j 篇【转】相关推荐

  1. Java解析xml文件dom4j篇(基于xml配置文件完成Excel数据的导入、导出功能完整实现)

    DOM4J解析XML文件 dom4j是一个Java的XML API,是jdom的升级产品,用来读写XML文件.另外对比其他API读写XML文件,dom4j是一个十分优秀的JavaXML API,具有性 ...

  2. JAVA操作xml文件

    参考:java操作xml方法,总有适合你的 XML技术在Java开发中的应用 1.简介 xml: extensible Markup Language 1.1使用场景: 不同的系统之间交互时使用xml ...

  3. Java操作XML文件及转义字符

    XML转义字符: eg: 实体必须以符号"&"开头,以符号";"结尾. 转载1: 目录 一.使用DOM4j进行XML的DOM解析 1.1.使用DOM4j ...

  4. Java 操作 xml 文件之写入

    对于 Java 对 xml 文件的读写,我在网上看了很多版本,结构差不多,根据自己的理解进行了一些总结. 写入数据到 xml 相对比较简单,我总结了以下两种写入方法,仅供参考! 1.dom4j 写入 ...

  5. java操作XML文件--读取内容

          先把问题贴出来:编写一个可以解析xml及修改xml内容的工具类       由于我以前做过Android应用程序开发,之前也解析过xml文件,所以,这道题不是很难,这篇文章我先解决第一个问 ...

  6. java操作xml文件--修改节点

          上一篇文章我介绍了SAX方法解析XML文件的过程,这篇文章讲解的内容是利用DOM方法修改XML文件的节点内容.       下面依然是首先贴出XML文件: <?xml version ...

  7. Java读写xml文件操作(3W)what why how where

    一. what 1.xml是一种可扩展的标记语言. 2.标记语言:是一种通过标签来描述数据的一门语言. 3.可扩展:标签的名字可以自己定义. 4.可以说xml文件是由标签组成,而标签是可以自定义的. ...

  8. XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 查找校验xml文件中相同的节点属性值 java遍历文件夹解析XML

    XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 以及查找xml文件中相同的节点属性值 项目背景:这是本人实习中所碰到的项目,当时感觉很棘手, ...

  9. java dom xml 换行,dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件...

    网友求助:dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件 问题importjava.text.SimpleDateFormat; import ...

最新文章

  1. mysql gtid 开启失败,master--1.1.3-SNAPSHOT版本,启用GTID,启动失败
  2. 揭秘华为麒麟990 5G:提前3年布局,百亿晶体管把7nm用到了极致
  3. java-Transient关键字、Volatile关键字介绍和序列化、反序列化机制、单例类序列化
  4. 《嵌入式系统数字视频处理权威指南》——第1章 现实世界中的视频
  5. java炸弹游戏_java实现数字炸弹
  6. 数据管理与商业智能_商业智能与数据科学
  7. JavaScript之子类构建工具
  8. 从内存布局上看,Rust的胖指针到底胖在栈上还是堆上?
  9. 常用的Linux命令行文本处理工具总结
  10. 联想内部工程师 Vista自学手册
  11. SAAS及PAAS的概念
  12. android 必读的文章- 收藏集 - 掘金
  13. HTML+CSS大作业 (水果之家10个网页)
  14. 走进C++11(四十)最宽松的顺序 memory_order_relaxed 内存模型(三)
  15. 3D环绕音乐单页网站源码
  16. h5优秀控件_7个效果震憾的HTML5应用组件
  17. 我的滑板鞋-2017年在魅力之都继续摩擦
  18. ipad文件APP连接服务器,是时候认识一下 iPad 的文件管理了
  19. 网页引用Font Awesome图标
  20. 教妹学 Java:大有可为的集合

热门文章

  1. iic裸机与linux通信,基于IIC协议的Linux操作系统与裸机通信的方法
  2. case when用法java_Oracle CASE WHEN 用法介绍
  3. centos7镜像加速_使用阿里云容器镜像服务托管私有Docker镜像
  4. 使用Asible批量部署yum仓库
  5. 一周一论文(翻译)——[PVLDB 17] Dhalion: 基于Heron自适应调整的流处理系统
  6. Java高并发编程(四):并发编程基础
  7. burpsuit拦截不了_burpsuite无法拦截本地流量
  8. java字符生成器_Java实现简单字符生成器代码例子
  9. js实现撤销恢复_我们常用的撤销和恢复功能,它们使用了什么设计模式实现吗?...
  10. SQL Server: Datetime,Datetime2