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

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

 package com.test.xml;

 import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import java.util.Random; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; /**
* @ClassName: TestDom4j
* @Description:dom4j练习xml的读写
* @author mrf
* @date 2015-11-11 下午02:25:20
*
*/
public class TestDom4j { /**
* @Title: read
* @Description:读取xml文件
* @param @param path 参数
* @return void 返回类型
* @throws DocumentException
*/
public static void read(String path) throws DocumentException{
SAXReader saxReader = new SAXReader();
Document doc = saxReader.read(new File(path));
//获取根元素
Element root = doc.getRootElement();
System.out.println(root.getName()+root.attributeValue("name"));
//获取子元素
@SuppressWarnings("unchecked")
List<Element> grades = root.elements();
if(!grades.isEmpty()){
for (int i = 0; i < grades.size(); i++) {
Element element = grades.get(i);
System.out.println(element.getName()+element.attributeValue("name"));
@SuppressWarnings("unchecked")
List<Element> classes = element.elements();
if(classes.size()>0){
for (int j = 0; j < classes.size(); j++) {
Element cls = classes.get(j);
@SuppressWarnings("unchecked")
List<Element> stus = cls.elements();
if(!stus.isEmpty()){
for (int k = 0; k < stus.size(); k++) {
Element stu = stus.get(k);
System.out.println(stu.getName()+stu.attributeValue("name")); //以下证明elements方法返回值不会为null,另查看源码发现也是直接创建list
// List list = stu.elements();
// System.out.println(list==null);
// System.out.println(list.size());
// System.out.println(list);
}
} }
}
}
}
} /**
* @Title: getRandoStr
* @Description:获取一个随机字符串
* @param @param len
* @param @return 参数
* @return String 返回类型
*/
public static String getRandoStr(int len){
String base = "abcdefghijklmnopqrstuvwxyz1234567890";
Random random = new Random();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < len; i++) {
sb.append(base.charAt(random.nextInt(base.length())));
} return sb.toString();
} /**
* @Title: write
* @Description: 测试写一个school文件
* @param @throws IOException 参数
* @return void 返回类型
*/
public static void write(String path) throws IOException{
//创建doc文档
Document doc = DocumentHelper.createDocument();
Element root = DocumentHelper.createElement("school");
//设置根元素
doc.setRootElement(root);
//添加属性
root.addAttribute("name","实验中学");
root.addAttribute("position","河北石家庄"); Element grade = root.addElement("grade");
grade.addAttribute("name", "年级");
grade.addAttribute("size", "1");
Element cls = grade.addElement("class");
cls.addAttribute("name", "班级");
cls.addAttribute("size", "70");
Element stu = cls.addElement("student");
stu.addAttribute("name", getRandoStr(4));
stu.addAttribute("age", 13+"");
stu.addAttribute("sex", new Random().nextInt(2)+"");
stu.setText("学生"); // //添加三个子节点初一初二初三
// for (int i = 1; i < 4; i++) {
// Element grade = root.addElement("grade");
// grade.addAttribute("name", "grade_"+i);
// grade.addAttribute("size", "20");
// //添加20个班级
// for (int j = 1; j < 21; j++) {
// Element cls = grade.addElement("class");
// cls.addAttribute("name", "grade_"+i+"_class_"+j);
// cls.addAttribute("size", "70");
// //添加70个学生
// for (int k = 1; k < 71; k++) {
// Element stu = cls.addElement("student");
// stu.addAttribute("name", getRandoStr(4));
// stu.addAttribute("age", 12+i+"");
// stu.addAttribute("sex", new Random().nextInt(2)+"");
// stu.setText("学生");
// }
// }
// } //输出
//控制台
new XMLWriter().write(doc); //文件
//格式 -缩进\t true表示换行
OutputFormat format = new OutputFormat("\t",true);
XMLWriter writer = new XMLWriter(new FileOutputStream(path),format);
writer.write(doc);
writer.flush();
writer.close(); } //解析xml字符串
public static Document parseStr(String xmlStr) throws DocumentException{
Document doc = DocumentHelper.parseText(xmlStr);
return doc;
} public static void main(String[] args) throws IOException, DocumentException {
// write("src/main/java/com/test/xml/school.xml"); read("src/main/java/com/test/xml/school.xml"); } }

dom4j的读写xml文件,读写xml字符串的更多相关文章

  1. 实现动态的XML文件读写操作

    实现动态的XML文件读写操作(依然带干货) 前言 最近由于项目需求,需要读写操作XML文件,并且存储的XML文件格式会随着导入的数据不同而随时改变(当然导入的数据还是有一定约束的),这样我们要预先定义 ...

  2. QXmlStreamReader/QXmlStreamWriter实现Qt下xml文件读写

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QXmlStreamReader/QXmlStreamWriter实现Qt下xml文件读写   ...

  3. 实现动态的XML文件读写操作(依然带干货)

    前言 最近由于项目需求,需要读写操作XML文件,并且存储的XML文件格式会随着导入的数据不同而随时改变(当然导入的数据还是有一定约束的),这样我们要预先定义好XML文件的格式就不太现实了,如何实现不管 ...

  4. xml文件读写

    创建xml文件,对xml文件进行添加新节点.删除节点.更新节点.创建的如下的xml文件. <?xml version="1.0" encoding="UTF-8&q ...

  5. 使用Java解析XML文件或XML字符串的例子

    转: 使用Java解析XML文件或XML字符串的例子 2017年09月16日 11:36:18 inter_peng 阅读数:4561 标签: JavaXML-Parserdom4j 更多 个人分类: ...

  6. 五毛的cocos2d-x学习笔记07-计时器、数据读写、文件读写

    调度器: 定时任务是通过调度器实现的.cocos2d-x推荐用调度器而不是其他方法实现定时任务.Node类都知道如何调度和取消调度事件. 有3种调度器: 默认调度器:schedulerUpdate() ...

  7. Android项目中的config.xml文件 “config.xml”

    Android应用程序需要保存一些配置时,可以将这些配置项放置到values/config.xml文件中. 实例分析: <?xml version="1.0" encodin ...

  8. xmlns:xsi ——是指xml文件遵守xml规范,xsi全名:xml schema instance

    http://blog.sina.com.cn/s/blog_4b6f8d150100nx3e.html http://blog.csdn.net/iaiti/article/details/4226 ...

  9. android-pull方式解析xml文件以及XML文件的序列化

    android解析XML ---------------------------基础要像磐石 在android平台上可以使用SAX.DOM和自带的Pull解析器解析xml文件,本文主要介绍使用pull ...

  10. 爪哇国新游记之十三----XML文件读写

    /** * XML读写示例 * @author hx * */ public class XmlReaderWriter{ /** * 读取一个XML文件,返回一个雇员链表 * @param file ...

随机推荐

  1. SCI Index

    Nature.[link]                                       Science.[link]                                  ...

  2. PADS从原理图到PCB整体简易流程

    10步完成PADS从原理图到PCB设计 图片有点大,可以点击观看. 第一步:启动PADS LOGIC 第二步:添加元器件 第三步:选择2个9脚接插头放置在原理图上 第四步:添加连线. 完成后如图 第五 ...

  3. Cron表达式备忘

    Cron表达式(在Quartz.net里面会用到) 由7段构成:秒 分 时 日 月 星期 年(可选)"-" :表示范围  MON-WED表示星期一到星期三"," ...

  4. GitHub的多人协同开发配置

    GitHub For Windows 下载地址:https://windows.github.com/ 基本的注册登录就不细讲了. 在源代码管理上,最重要的就是仓库了.仓库这一概念很容易理解,所谓仓库 ...

  5. 可在广域网部署运行的QQ高仿版 -- GG叽叽(源码)

    前段时间看到园子里有朋友开发了QQ高仿版的程序,我也非常有兴趣,以前一直有个做即时聊天程序的梦,趁这段时间工作不是很忙,就开始动手来做这个事情.根据我以往积累下来的项目经验,实现QQ的基本功能,问题应 ...

  6. ZooKeeper学习第一期---Zookeeper简单介绍

    一.分布式协调技术 在给大家介绍ZooKeeper之前先来给大家介绍一种技术——分布式协调技术.那么什么是分布式协调技术?那么我来告诉大家,其实分布式协调技术主要用来解决分布式环境当中多个进程之间的同 ...

  7. Flume概述和简单实例

    Flume概述 Flume是一个分布式.可靠.和高可用的海量日志采集.聚合和传输的系统.支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方( ...

  8. 【原创】三分钟教你学会MVC框架——基于java web开发(1)

    MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法. ...

  9. json-smart 使用示例(推荐fastjson)

    关于json库,请使用fastjson,这是我用过的最好用的json库! 地址:https://github.com/alibaba/fastjson ======================== ...

  10. 在cocos2dx和unity3d之间选择

    人生最纠结的事,莫过于有选择………… cocos2dx和unity3d从某种意义上讲,都很不错.但当面对特定需求以及团队情况的时候,总是能分出高下的. 假设,目标游戏是一款类似 刀塔传奇 的游戏 我们 ...