dom4j的读写xml文件,读写xml字符串

百度了一些博客,大同小异,在选取jar包工具的时候大概看了下,大抵是jdom原始,dom4j优秀。于是做了些练习。

参考:http://www.cnblogs.com/mengdd/archive/2013/06/05/3119927.html

复制代码
  1 package com.test.xml;
  2 
  3 import java.io.File;
  4 import java.io.FileOutputStream;
  5 import java.io.IOException;
  6 import java.util.List;
  7 import java.util.Random;
  8 
  9 import org.dom4j.Document;
 10 import org.dom4j.DocumentException;
 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;
 16 
 17 /**
 18 * @ClassName: TestDom4j 
 19 * @Description:dom4j练习xml的读写 
 20 * @author mrf
 21 * @date 2015-11-11 下午02:25:20 
 22 *
 23  */
 24 public class TestDom4j {
 25     
 26     /**
 27     * @Title: read 
 28     * @Description:读取xml文件 
 29     * @param @param path    参数
 30     * @return void    返回类型
 31      * @throws DocumentException 
 32      */
 33     public static void read(String path) throws DocumentException{
 34         SAXReader saxReader = new SAXReader();
 35         Document doc = saxReader.read(new File(path));
 36         //获取根元素
 37         Element root = doc.getRootElement();
 38         System.out.println(root.getName()+root.attributeValue("name"));
 39         //获取子元素
 40         @SuppressWarnings("unchecked")
 41         List<Element> grades = root.elements();
 42         if(!grades.isEmpty()){
 43             for (int i = 0; i < grades.size(); i++) {
 44                 Element element = grades.get(i);
 45                 System.out.println(element.getName()+element.attributeValue("name"));
 46                 @SuppressWarnings("unchecked")
 47                 List<Element> classes = element.elements();
 48                 if(classes.size()>0){
 49                     for (int j = 0; j < classes.size(); j++) {
 50                         Element cls = classes.get(j);
 51                         @SuppressWarnings("unchecked")
 52                         List<Element> stus = cls.elements();
 53                         if(!stus.isEmpty()){
 54                             for (int k = 0; k < stus.size(); k++) {
 55                                 Element stu = stus.get(k);
 56                                 System.out.println(stu.getName()+stu.attributeValue("name"));
 57                                 
 58                                 //以下证明elements方法返回值不会为null,另查看源码发现也是直接创建list
 59 //                                List list = stu.elements();
 60 //                                System.out.println(list==null);
 61 //                                System.out.println(list.size());
 62 //                                System.out.println(list);
 63                             }
 64                         }
 65                         
 66                     }
 67                 }
 68             }
 69         }
 70     }
 71     
 72     /**
 73     * @Title: getRandoStr 
 74     * @Description:获取一个随机字符串 
 75     * @param @param len
 76     * @param @return    参数
 77     * @return String    返回类型
 78      */
 79     public static String getRandoStr(int len){
 80         String base = "abcdefghijklmnopqrstuvwxyz1234567890";
 81         Random random = new Random();
 82         StringBuilder sb = new StringBuilder();
 83         for (int i = 0; i < len; i++) {
 84             sb.append(base.charAt(random.nextInt(base.length())));
 85         }
 86         
 87         return sb.toString();
 88     }
 89     
 90     /**
 91     * @Title: write 
 92     * @Description: 测试写一个school文件
 93     * @param @throws IOException    参数
 94     * @return void    返回类型
 95      */
 96     public static void write(String path) throws IOException{
 97         //创建doc文档
 98         Document doc = DocumentHelper.createDocument();
 99         Element root = DocumentHelper.createElement("school");
100         //设置根元素
101         doc.setRootElement(root);
102         //添加属性
103         root.addAttribute("name","实验中学");
104         root.addAttribute("position","河北石家庄");
105         
106         Element grade = root.addElement("grade");
107         grade.addAttribute("name", "年级");
108         grade.addAttribute("size", "1");
109         Element cls = grade.addElement("class");
110         cls.addAttribute("name", "班级");
111         cls.addAttribute("size", "70");
112         Element stu = cls.addElement("student");
113         stu.addAttribute("name", getRandoStr(4));
114         stu.addAttribute("age", 13+"");
115         stu.addAttribute("sex", new Random().nextInt(2)+"");
116         stu.setText("学生");
117         
118 //        //添加三个子节点初一初二初三
119 //        for (int i = 1; i < 4; i++) {
120 //            Element grade = root.addElement("grade");
121 //            grade.addAttribute("name", "grade_"+i);
122 //            grade.addAttribute("size", "20");
123 //            //添加20个班级
124 //            for (int j = 1; j < 21; j++) {
125 //                Element cls = grade.addElement("class");
126 //                cls.addAttribute("name", "grade_"+i+"_class_"+j);
127 //                cls.addAttribute("size", "70");
128 //                //添加70个学生
129 //                for (int k = 1; k < 71; k++) {
130 //                    Element stu = cls.addElement("student");
131 //                    stu.addAttribute("name", getRandoStr(4));
132 //                    stu.addAttribute("age", 12+i+"");
133 //                    stu.addAttribute("sex", new Random().nextInt(2)+"");
134 //                    stu.setText("学生");
135 //                }
136 //            }
137 //        }
138         
139         
140         //输出
141         //控制台
142         new XMLWriter().write(doc);
143         
144         //文件
145         //格式 -缩进\t true表示换行
146         OutputFormat format = new OutputFormat("\t",true);
147         XMLWriter writer = new XMLWriter(new FileOutputStream(path),format);
148         writer.write(doc);
149         writer.flush();
150         writer.close();
151         
152     }
153     
154     //解析xml字符串
155     public static Document parseStr(String xmlStr) throws DocumentException{
156         Document doc = DocumentHelper.parseText(xmlStr);
157         return doc;
158     }
159     
160     public static void main(String[] args) throws IOException, DocumentException {
161 //        write("src/main/java/com/test/xml/school.xml");
162         
163         read("src/main/java/com/test/xml/school.xml");
164         
165     }
166 
167 }
复制代码

 

本文转自Ryan.Miao博客园博客,原文链接:http://www.cnblogs.com/woshimrf/p/4956209.html,如需转载请自行联系原作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454074.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习之数据增强方案和TensorFlow操作

一、数据增强的方法介绍 增加训练数据&#xff0c; 则能够提升算法的准确率&#xff0c; 因为这样可以避免过拟合&#xff0c; 而避免了过拟合你就可以增大你的网络结构了。 当训练数据有限的时候&#xff0c; 可以通过一些变换来从已有的训练数据集中生成一些新的数据&#x…

使用OpenSSL实现CA证书的搭建过程

个人博客地址&#xff1a;http://www.pojun.tech/ 欢迎访问 什么是CA CA,Catificate Authority,通俗的理解就是一种认证机制。它的作用就是提供证书&#xff08;也就是服务端证书&#xff0c;由域名&#xff0c;公司信息&#xff0c;序列号&#xff0c;签名信息等等组成&#…

gdb使用实例

第一篇 概论我们将学习使用gdb来调试通过一个通过串行线同PC相连的嵌入式系统。Gdb可以调试各种程序&#xff0c;包括C、C、JAVA、PASCAL、FORAN和一些其它的语言。包括GNU所支持的所有微处理器的汇编语言。在gdb的所有可圈可点的特性中&#xff0c;有一点值得注意&#xff0c;…

Linux 监控命令之 netstat

netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据&#xff0c;一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的程序&#xff0c;它能提供TCP连接&#xff0c;TCP和UDP监听&#xff0c;进程内存管理的相关报告。 语法 netstat [-acC…

solr 配置

创建 SolrHome(solrCore) 1.解压 solr-4.10.4.tgz 到 /usr/local/solr 2.将 solr-4.10.4/example/solr 下所有文件拷贝到 /usr/local/solrhome (此 solrhome 为自己创建的) solrhome 是 solr 运行主目录&#xff0c;可包含多个 SolrCore 目录SolrCore 目录中包含运行 Solr 实例…

mfc程序转化为qt_10年程序员:我都学过这些语言,2019年开始我再也不是程序员......

为什么学编程2008年&#xff0c;高中毕业的我问一个已经工作两年的亲戚&#xff1a;什么专业工资高&#xff1f;他告诉我&#xff1a;程序员。2008年成都最低工资好像是800元&#xff0c;我的生活费也是800元&#xff0c;据他所说程序员出来的工资是2000&#xff0c;于是开始了…

day 7 引用

1.ba在c语言和python中的区别 c语言&#xff1a;a100 a变量里面放的100 b a b变量里面也放的100 python &#xff1a; a100 内存中有个100 a放的100的内存地址 b a b也放的100的内存地址 相当于给100那一块内存&#xff0c;贴个便利签 2.type查看数据类型&…

Dapper逆天入门~强类型,动态类型,多映射,多返回值,增删改查+存储过程+事物案例演示...

Dapper的牛逼就不扯蛋了&#xff0c;答应群友做个入门Demo的&#xff0c;现有园友需要&#xff0c;那么公开分享一下&#xff1a; 完整Demo&#xff1a;http://pan.baidu.com/s/1i3TcEzj 注 意 事 项&#xff1a;http://www.cnblogs.com/dunitian/p/5221058.html 平台之大势何人…

ride上点击用例不能显示edit信息_接口测试平台代码实现61: 多接口用例1

终于又序更上了&#xff0c;原谅最近作者几天事情不断。按照我们之前的计划&#xff0c;需要迅速开启很重要的核心多用例接口。首先&#xff0c;我们要确定&#xff0c;这个功能的大体设计。就放在在我们的页面 用例库 中&#xff1a;所以也就是我们很久之前就创建好的P_cases.…

MUI - 预加载

打开详情页回到顶部:document.body.scrollTop document.documentElement.scrollTop 0;方式一&#xff1a;preload一次仅能预加载一个页面&#xff08;除非循环&#xff09; var subWebview mui.preload({url: examples/accordion.html,id: template_sub,top: styles: {48 …

Bash : 索引数组

Bash 提供了两种类型的数组&#xff0c;分别是索引数组(indexed array)和关联数组(associative array)。本文主要介绍索引数组的基本用法。 索引数组的基本特点 Bash 提供的数组都是一维数组。任何变量都可以用作索引数组。通过 declare 关键字可以显式的声明一个索引数组。数组…

Python 第三方模块之 smtplib

1 python对SMTP的支持 SMTP&#xff08;Simple Mail Transfer Protocol&#xff09;是简单传输协议&#xff0c;它是一组用于用于由源地址到目的地址的邮件传输规则。 python中对SMTP进行了简单的封装&#xff0c;可以发送纯文本邮件、HTML邮件以及带附件的邮件。两个核心模块…

Node.js 使用jQuery取得Nodejs http服务端返回的JSON对象示例

server.js代码&#xff1a; // 内置http模块&#xff0c;提供了http服务器和客户端功能&#xff08;path模块也是内置模块&#xff0c;而mime是附加模块&#xff09; var httprequire("http");// 创建服务器,创建HTTP服务器要调用http.createServer()函数&#xff0c…

svg 动画_根据AI导出的SVG path制作SVG线条动画

点击右上方红色按钮关注“web秀”&#xff0c;让你真正秀起来前言首先祝大家2019新年快乐&#xff0c;万事大吉&#xff0c;猪事顺利&#xff0c;阖家欢乐。前面文章SVG 线条动画基础入门知识学习到了基础知识&#xff0c;现在来给大家讲讲如何制作SVG 制作复杂图形线条动画。假…

读书笔记2013第3本:《无价》

《无价》这本书是过年前买的&#xff0c;网络书店上写着“老罗推荐”&#xff0c;想着好像是在老罗哪一年的演讲里听过这本书&#xff0c;在豆瓣上评分7.9。读书是为了产生行动&#xff0c;读书时要提的4个问题&#xff0c;1&#xff09;这本书主要在谈些什么&#xff1f;2&…

Linux下的程序调试——GDB

无论是多么优秀的程序员&#xff0c;都难以保证自己在编写代码时不会出现任何错误&#xff0c;因此调试是软件开发过程中的一个必不可少的 组成部分。当程序完成编译之后&#xff0c;它很可能无法正常运行&#xff0c;或者会彻底崩溃&#xff0c;或者不能实现预期的功能。此时如…

圆锥曲线万能弦长公式_2020高考数学50条秒杀型公式与方法

考试马上就要到了&#xff0c;学姐整理了高考数学50条秒杀型公式和方法&#xff0c;希望能帮助考生们更好地攻克数学难关&#xff01;高考数学秒杀公式与方法一1&#xff0c;适用条件&#xff1a;[直线过焦点]&#xff0c;必有ecosA(x-1)/(x1)&#xff0c;其中A为直线与焦点所在…

Python 内置模块之 logging

日志的级别和适用情况 级别适用情况DEBUG详细信息&#xff0c;通常只在诊断问题时对其感兴趣INFO确认工作正常WARNING表示发生了意料之外的事或者在不远的将来会有问题&#xff08;比如磁盘空间低&#xff09;。软件依然正常工作ERROR由于一个更加严重的问题&#xff0c;软件不…

数据结构与算法 Python语言描述 笔记

数据结构 线性表包括顺序表和链表&#xff0c;python的list是顺序表&#xff0c;链表一般在动态语言中不会使用。不过链表还是会出现在各种算法题中。 链表 link list 单链表 逆转链表&#xff1a; leetcode 206双链表循环单链表字符串 string 有一个重要的点就是字符串的匹配问…

Flask 跨域问题

一、什么是跨域 跨域是指&#xff1a;浏览器A从服务器B获取的静态资源&#xff0c;包括Html、Css、Js&#xff0c;然后在Js中通过Ajax访问C服务器的静态资源或请求。即&#xff1a;浏览器A从B服务器拿的资源&#xff0c;资源中想访问服务器C的资源。 同源策略是指&#xff1a;…