博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dom4j的读写xml文件,读写xml字符串
阅读量:6717 次
发布时间:2019-06-25

本文共 6378 字,大约阅读时间需要 21 分钟。

百度了一些博客,大同小异,在选取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
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
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
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,如需转载请自行联系原作者
你可能感兴趣的文章
宅男程序员给老婆的计算机课程之4:SQL vs NoSQL
查看>>
VIM编辑模式与命令模式
查看>>
python小技巧-基于python本身
查看>>
【C#】使用ADO .Net Entities Framework 与WPF ListBox控件绑定
查看>>
CentOS5.x系统 配置YUM服务器
查看>>
OTS数据迁移验证方案
查看>>
黑客学习笔记教程之一:黑客文化
查看>>
alias别名、时间、screen、echo等——Linux基本命令(3)
查看>>
Access-Control-Allow-Origin与跨域
查看>>
Python正则表达式详解
查看>>
交换机、路由器设备选型总结
查看>>
linux文件系统介绍
查看>>
find
查看>>
互联网MySQL开发规范
查看>>
android中的按钮以图片的方式显示_基础篇
查看>>
linux indent命令: 调整C原始代码文件的格式
查看>>
snmp之——2交换机MIB库ID和物理端口不对应
查看>>
Centos6.7下安装python连接mysql环境故障解决
查看>>
12.交换路由密码恢复
查看>>
sudo:sorry,you must have a tty to run sudo
查看>>