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 ...
随机推荐
- 介绍一点.NET反编译的知识
反编译是我们理解.NET内部实现的一种良好的手段. 程序编译时 Test.exe是IL代码.我们可以通过一些工具,来查看这些IL代码. 一模一样? 理论上来说,一模一样的反编译是不存在的.原因有以下3 ...
- 在C#中对Datatable排序【DefaultView的Sort方法】
在C#中对Datatable排序,[DefaultView的Sort方法] 代码如下: DataTable dt = new DataTable(); dt.Columns.Add("ID& ...
- Spark和Hadoop作业之间的区别
Spark目前被越来越多的企业使用,和Hadoop一样,Spark也是以作业的形式向集群提交任务,那么在内部实现Spark和Hadoop作业模型都一样吗?答案是不对的. 熟悉Hadoop的人应该都知道 ...
- 批量删除的js代码
<script type="text/javascript"> function seltAll(){ var chckBoxSign = document.getEl ...
- 【转】在delphi中实现控件的拖拽
提示:可以添加一个布尔来控制可否拖动的状态,这里提供所有都能拖动的方法. procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseB ...
- 在GridControl控件中使用SearchLookUpEdit构建数据快速输入
较早之前,曾经介绍了一篇文章<使用DataGridView数据窗口控件,构建用户快速输入体验>,介绍了在传统DataGridView中嵌入一个数据窗口进行选择列表,从而实现数据快速录入的操 ...
- C# 添加系统计划任务方案
你可以在Windows 计划任务管理器里面添加计划任务,调试OK后导出XML文件,然后在要部署的计算机上执行CMD导入命令,把计划任务信息配置导入到服务器上的计划任务列表中,命令如下: SCHTASK ...
- 第一章 管理程序流(In .net4.5) 之 实现多线程和异步处理
1. 概述 本章主要讲解.net4.5如何实现多线程和异步处理的相关内容. 2. 主要内容 2.1 理解线程 ① 使用Thread类 public static class Program { ...
- Oracle 错误代码
ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出 ...
- 【原创】可以换行的RadioGroup
0.效果截图: 以上两个RadioGroup均使用FNRadioGroup实现. 1.控件代码: public class FNRadioGroup extends ViewGroup { /** 没 ...