dom4j的读写xml文件,读写xml字符串
百度了一些博客,大同小异,在选取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字符串的更多相关文章
- 实现动态的XML文件读写操作
实现动态的XML文件读写操作(依然带干货) 前言 最近由于项目需求,需要读写操作XML文件,并且存储的XML文件格式会随着导入的数据不同而随时改变(当然导入的数据还是有一定约束的),这样我们要预先定义 ...
- QXmlStreamReader/QXmlStreamWriter实现Qt下xml文件读写
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QXmlStreamReader/QXmlStreamWriter实现Qt下xml文件读写 ...
- 实现动态的XML文件读写操作(依然带干货)
前言 最近由于项目需求,需要读写操作XML文件,并且存储的XML文件格式会随着导入的数据不同而随时改变(当然导入的数据还是有一定约束的),这样我们要预先定义好XML文件的格式就不太现实了,如何实现不管 ...
- xml文件读写
创建xml文件,对xml文件进行添加新节点.删除节点.更新节点.创建的如下的xml文件. <?xml version="1.0" encoding="UTF-8&q ...
- 使用Java解析XML文件或XML字符串的例子
转: 使用Java解析XML文件或XML字符串的例子 2017年09月16日 11:36:18 inter_peng 阅读数:4561 标签: JavaXML-Parserdom4j 更多 个人分类: ...
- 五毛的cocos2d-x学习笔记07-计时器、数据读写、文件读写
调度器: 定时任务是通过调度器实现的.cocos2d-x推荐用调度器而不是其他方法实现定时任务.Node类都知道如何调度和取消调度事件. 有3种调度器: 默认调度器:schedulerUpdate() ...
- Android项目中的config.xml文件 “config.xml”
Android应用程序需要保存一些配置时,可以将这些配置项放置到values/config.xml文件中. 实例分析: <?xml version="1.0" encodin ...
- 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 ...
- android-pull方式解析xml文件以及XML文件的序列化
android解析XML ---------------------------基础要像磐石 在android平台上可以使用SAX.DOM和自带的Pull解析器解析xml文件,本文主要介绍使用pull ...
- 爪哇国新游记之十三----XML文件读写
/** * XML读写示例 * @author hx * */ public class XmlReaderWriter{ /** * 读取一个XML文件,返回一个雇员链表 * @param file ...
随机推荐
- 让Entity Framework启动不再效验__MigrationHistory表
Entity Framework中DbContext首次加载OnModelCreating会检查__MigrationHistory表,作为使用Code Frist编程模式,而实际先有数据库时,这种检 ...
- ie8下使用knockoutjs遇到的一个模板异常
ViewModel中有一个数组,代码大概如下: function ReportViewModel(){ var self = this; self.extendedProperties = ko.ob ...
- .NET转Java学习规则
做一个个人Blog(博客) 过程分3个大阶段: 使用servlet/jsp和jdbc,mysql完成第一阶段Blog 项目修改为Spring(IOC+MVC)+SpringJdbc+MyBatis模式 ...
- MapReduce实例浅析
在文章<MapReduce原理与设计思想>中,详细剖析了MapReduce的原理,这篇文章则通过实例重点剖析MapReduce 本文地址:http://www.cnblogs.com/ar ...
- 【面试必备】javascript操作DOM元素
前言 时间过的真快,不知不觉就到年底了.问问自己,这一年你对自己的工作满意吗? 评价标准是什么呢?当然是马云的那两条准则了:钱给到了吗?干的爽吗?如果答案都是no,那么,你准备好跳槽了吗? 为了应对年 ...
- 在ThoughtWorks工作这几年我学到了什么?
不知不觉,从2012年5月1日加入ThoughtWorks到现在,已经3年有余了.时间过得很快,这三年多我干了很多事情,但仔细想想也没有什么特别值得一提的.在一个公司呆久了总觉得很多事情是理所当然的, ...
- Java基础之网络编程
网络编程:1.网络编程概述 (1)网络模型 OSI参考模型 TCP/IP参考模型 (2)网络通讯要素 IP地址 端口号 传输协议 (3)网络通讯前提: **找到对方IP **数据要发送到指定端口.为了 ...
- DDD~领域事件与事件总线
回到目录 谈谈它 终于有些眉目了,搜刮了很多牛人的资料,英文的,中文的,民国文的,终于小有成就了,同时也做了个DEMO,领域事件这东西好,但需要你明白它之后才会说好,而对于明白领域事件这件事来说,它的 ...
- Bootstrap~大叔封装的弹层
回到目录 对于Bootstrap的弹层,插件有很多,今天主要用的是它自带的功能,通过bootstrap提供的模式窗口来实现的,而大叔主要对使用方法进行了封装,开发人员可以自己动态传入弹层的HTML内容 ...
- WebApi系列~自主宿主HttpSelfHost的实现
回到目录 宿主一词我们不会陌生,它可以看作是一个基础设施,它为一些服务和功能提供最底层的支持,如你的web应用程序可以运行在iis或者apache上,而这两个东西就是web应用程序的宿主,而今天说的自 ...