SAXReader
DOM4j读取XML文件(SAXReader)
|
一、 总结: Document document=new SAXReader.reader(“xml文路径/文件名xxx.xml”);//得到Document对象 Element root = document.getRootElement()//获得根节点 Iterator iterator=root.elementIterator(); //从根节点遍历子节点 Iterator iterator=Element.elementIterator(); //再从子节点在遍历其子节点 对节点访问其属性用:Attribute leaderAttr =Element. attribute(“xxx”); 对节点访问其某个属性leaderAttr的名称:leaderAttr.getName(); 对节点访问其名称:Element.getName(); 对节点访问其文本:Element. getText(); 简单代码为如下: Document document=new SAXReader.reader(“xml文路径/文件名xxx.xml”); HashMap hm = new HashMap<String,String>(); 。。。。。 for ( Iterator iterInner = element.elementIterator(); iterInner.hasNext(); ) { Element elementInner = (Element) iterInner.next(); //遍历college节点开始 if(elementInner.getName().equals("college")){ /添加college的文本 hm.put(elementInner.getName()+ num, elementInner.getText()); //添加college的leader属性 Attribute leaderAttr=elementInner.attribute("leader"); 。。。。。如果leaderAttr不是空字符或者其值不为null。。。。。 hm.put(elementInner.getName() + "-"+leaderAttr.getName()+ num, leaderAttr.getValue()); } else{ //遍历非college节点的其它节点 hm.put(elementInner.getName()+ num, elementInner.getText()); } <?xml version="1.0" encoding="UTF-8"?> <students> <student age="25"><!--如果没有age属性,默认的为20--> <name>崔卫兵</name> <college>PC学院</college> <telephone>62354666</telephone> <notes>男,1982年生,硕士,现就读于北京邮电大学</notes> </student> <student> <name>cwb</name> <college leader="学院领导">PC学院</college><!--如果没有leader属性,默认的为leader--> <telephone>62358888</telephone> <notes>男,1987年生,硕士,现就读于中国农业大学</notes> </student> <student age="45"> <name>xxxxx</name> <college leader="">xxx学院</college> <telephone>66666666</telephone> <notes>注视中,注释中</notes> </student> <student age=""> <name>lxx</name> <college>yyyy学院</college> <telephone>88888888</telephone> <notes>注视中111,注释中222</notes> </student> </students> Dom4jReadExmple.java package test2; import java.io.File; import java.util.HashMap; import java.util.Iterator; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class Dom4jReadExmple { public void iterateWholeXML(String filename,HashMap<String,String> hm){ SAXReader saxReader = new SAXReader(); try { Document document = saxReader.read(new File(filename)); Element root = document.getRootElement(); // 用于记录学生编号的变量 int num=-1; //遍历根结点(students)的所有孩子节点(肯定是student节点) for ( Iterator iter = root.elementIterator(); iter.hasNext(); ) { Element element = (Element) iter.next(); num++; // 获取person节点的age属性的值 Attribute ageAttr=element.attribute("age"); if(ageAttr!=null){ String age = ageAttr.getValue(); if (age != null&&!age.equals("")) { hm.put(element.getName() + "-"+ageAttr.getName()+ num, age); } else { hm.put(element.getName() + "-" +ageAttr.getName()+ num, "20"); } }else{ hm.put(element.getName() + "-age"+ num, "20"); } //遍历student结点的所有孩子节点(即name,college,telphone,notes),并进行处理 for ( Iterator iterInner = element.elementIterator(); iterInner.hasNext(); ) { Element elementInner = (Element) iterInner.next(); if(elementInner.getName().equals("college")){ hm.put(elementInner.getName()+ num, elementInner.getText()); //获取college节点的leader属性的值 Attribute leaderAttr=elementInner.attribute("leader"); if(leaderAttr!=null){ String leader = leaderAttr.getValue(); if (leader != null&&!leader.equals("")) { hm.put(elementInner.getName() + "-"+leaderAttr.getName()+ num, leader); } else { hm.put(elementInner.getName() + "-" +leaderAttr.getName()+ num, "leader"); } }else { hm.put(elementInner.getName() + "-leader"+ num, "leader"); } }else{ hm.put(elementInner.getName()+ num, elementInner.getText()); } } } } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } package dom4jExample.read; import java.util.HashMap; public class TestDom4jReadExmple { public static void main(String[] args) { try{ //获取解析完后的解析信息 HashMap<String,String> hashMap; Dom4jReadExmple drb=new Dom4jReadExmple(); //遍历整个XML文件 hashMap = new HashMap<String,String>(); drb.iterateWholeXML("studentInfo.xml", hashMap); System.out.println("姓名\t年龄\t学院\t学院领导\t电话\t\t备注"); for(int i=0;i<hashMap.size();i+=6){ int j=i/6; System.out.print(hashMap.get("name"+j)+"\t"); System.out.print(hashMap.get("student-age"+j)+"\t"); System.out.print(hashMap.get("college"+j)+"\t"); System.out.print(hashMap.get("college-leader"+j)+"\t"); System.out.print(hashMap.get("telephone"+j)+"\t"); System.out.println(hashMap.get("notes"+j)+"\t"); } }catch(Exception ex){ ex.printStackTrace(); } } } 二、 一个读写操作的例子: import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.util.Iterator; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; public class testXml { public static void main(String[] args) { try { testXml test = new testXml(); test.testWrite(); test.testRead(); } catch (Exception e) { e.printStackTrace(); } } public void testRead() throws Exception{ SAXReader reader = new SAXReader(); Document document = reader.read(new FileInputStream("src/output.xml")); Element root = document.getRootElement(); for (Iterator iter = root.elementIterator(); iter.hasNext();) { Element element = (Element) iter.next(); System.out.println(element.getText()); System.out.println(element.attributeValue("name")); System.out.println(element.attributeValue("blog")); } } public void testWrite() throws Exception{ Document document = DocumentHelper.createDocument(); Element root = document.addElement("root"); for(int i=0;i<10;i++){ Element element1 = root.addElement("user") .addAttribute("name","Alex"+i) .addAttribute("id", "id"+i) .addText("我是信息"); } XMLWriter writer = new XMLWriter(new FileOutputStream("src/output.xml")); writer.write(document); writer.close(); } } 输出的效果: <?xml version="1.0" encoding="UTF-8"?> <root> <user name="Alex0" id="id0">我是信息</user> <user name="Alex1" id="id1">我是信息</user> <user name="Alex2" id="id2">我是信息</user> <user name="Alex3" id="id3">我是信息</user> <user name="Alex4" id="id4">我是信息</user> <user name="Alex5" id="id5">我是信息</user> <user name="Alex6" id="id6">我是信息</user> <user name="Alex7" id="id7">我是信息</user> <user name="Alex8" id="id8">我是信息</user> <user name="Alex9" id="id9">我是信息</user> </root> |
SAXReader的更多相关文章
- 使用SAXReader读取ftp服务器上的xml文件(原创)
根据项目需求,需要监测ftp服务器上的文件变化情况,并将新添加的文件读入项目系统(不需要下载). spring配置定时任务就不多说了,需要注意的一点就是,现在的项目很多都是通过maven构建的,分好多 ...
- Dom4j SAXReader Constructors
Dom4j读取xml:eg1: package xml; import java.io.File; import org.dom4j.DocumentException; import org.dom ...
- SAXReader简单实例解析HTML
转载自:http://blog.csdn.net/seayqrain/article/details/5024068# 使用SAXReader需要导入dom4j-full.jar包. dom4j是一个 ...
- SaxReader读取xml
package com.java1234.action; import java.io.File; import java.util.List; import org.dom4j.Document; ...
- 使用dom4j中SAXReader解析xml数据
public ApiConfig(String configFilePath) throws DocumentException{ SAXReader reader = new SAXReader() ...
- XML文件解析-SaxReader
一.前言 java解析xml文件有几种方式,这里介绍一下用SaxReader来解析Xml的方法. 二.准备 如果用SaxReader的话,需要引入jar包dom4j, 版本的话官网下载一个就好,这里用 ...
- SAXReader解析xml文件demo
1. 加入jar包 2. 代码解析 package practice; import java.io.File; import java.util.List; import org.dom4j.Doc ...
- java SAXReader
使用SAXReader需要导入dom4j-full.jar包. dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的JavaXML API,具 ...
- java解析XML saxReader.read(xml) 错误:org.dom4j.DocumentException: no protocol
java解析XML saxReader.read(xml) 错误:org.dom4j.DocumentException: no protocol 完整错误信息: org.dom4j.Document ...
随机推荐
- cpack
一. 简介 CPack是CMake 2.4.2之后的一个内置工具,主要作用就是生成制定类型的安装包.它可以脱离cmake单独运行. 二. 基本设置 (mandatory) 设置包类型set(CPACK ...
- j-query j-query
jQuery 1.安装:http://jquery.com/download/登陆这个jQuery下载2在.html文件的<head>标签中导入3 语法$(selector).acti ...
- 纯js拖拽参考
function myDrag(obj){ obj.onmousedown=function(e){ var e=e||window.event; var diffX=e.clientX-this.o ...
- LotusPhp中配置文件组件LtConfig详解
LotusPhp中配置文件组件LtConfig是约定的一个重要组成部分,适用于多个场景,多数的LotusPhp组件如数据库,缓存,RBAC,表单验证等都需要用到配置组件,LtConfig配置组件也是L ...
- PHP file_get_contents于curl性能效率比较
说明大部分内容整理来源于网络,期待你的补充.及不当之处的纠正: 1)fopen/file_get_contents 每次请求远程URL中的数据都会重新做DNS查询,并不对DNS信息进行缓存.但是CUR ...
- ASP.NET MVC5学习笔记之Filter提供体系
前面我们介绍了Filter的基本使用,但各种Filter要在合适的时机运行起来,需要预先准备好,现在看看ASP.NET MVC框架是怎么做的. 一.Filter集合 在ControlerActionI ...
- 【转】Doscommand-操作Cmd的第三方控件
核心用法: Doscommand1.CommandLine := 'cmd /c' +[命令];Doscommand1.OutputLines :=Memo1.Lines;Doscommand1.Ex ...
- STM32F4_TIM输出PWM波形(可调频率、占空比)
Ⅰ.概述 上一篇文章关于STM32基本的计数原理明白之后,该文章是在其基础上进行拓展,讲述关于STM32比较输出的功能,以输出PWM波形为实例来讲述. 提供实例工程中比较实用的函数:只需要调用该函数, ...
- MVC中的奇葩错误,参数转对象
在使用MVC中遇到一个神奇的错误,特此记录(我在用MVC4时遇到) 上面两张图就是一个变量名进行了修改,其他不变!form里面的参数也是一样的!喜欢尝试的可以尝试一下! 我的变量使用action时出现 ...
- sublime text 3 设置
最近开始用sublime text 3,查资料总结了一下常用的设置,记录下以备用,同时也希望能改大家带来方便 0.使用package control安装,点前边超链接,复制左侧代码到console,回 ...