使用SAXReader需要导入dom4j-full.jar包。

dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的JavaXML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。

使用举例:

1.    s.xml内容

  1. <?xml version="1.0" encoding="GB2312"?>
  2. <data>
  3. <row queryDTO.enterpriseId="gfd" queryDTO.loginName="gdfg" queryDTO.state="0"/>
  4. </data>

2.解析

  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import java.io.FileNotFoundException;
  4. import java.util.Iterator;
  5. import java.util.List;
  6. import org.dom4j.Document;
  7. import org.dom4j.DocumentException;
  8. import org.dom4j.Element;
  9. import org.dom4j.io.SAXReader;
  10. import org.dom4j.tree.AbstractAttribute;
  11. public class ReadXMLTest {
  12. public static void main(String[] args){
  13. File xmlFile = new File("C:/s.xml");
  14. FileInputStream fis = null;
  15. try {
  16. fis = new FileInputStream(xmlFile);
  17. } catch (FileNotFoundException e) {
  18. e.printStackTrace();
  19. System.err.println("File is not exsit!");
  20. }
  21. SAXReader saxReader = new SAXReader();
  22. List rowList = null;
  23. try {
  24. //生成文档对应实体
  25. Document doc = saxReader.read(fis);
  26. //获取指定路径下的元素列表,这里指获取所有的data下的row元素
  27. rowList = doc.selectNodes("//data/row");
  28. } catch (DocumentException e) {
  29. e.printStackTrace();
  30. }
  31. for(Iterator iter = rowList.iterator();iter.hasNext();){
  32. //获得具体的row元素
  33. Element element = (Element)iter.next();
  34. //获得row元素的所有属性列表
  35. List elementList = element.attributes();
  36. for(Iterator iter1 = elementList.iterator();iter1.hasNext();){
  37. //将每个属性转化为一个抽象属性,然后获取其名字和值
  38. AbstractAttribute aa = (AbstractAttribute)iter1.next();
  39. System.out.println("Name:"+aa.getName()+";Value:"+aa.getValue());
  40. }
  41. //输出:
  42. //Name:queryDTO.enterpriseId;Value:gfd
  43. //Name:queryDTO.loginName;Value:gdfg
  44. //Name:queryDTO.state;Value:0
  45. System.out.println(element.getName());
  46. //输出:
  47. //row
  48. // 取得row元素的queryDTO.enterpriseId属性的值
  49. System.out.println(element.attributeValue("queryDTO.enterpriseId"));
  50. //输出:
  51. //gfd
  52. //如果element下有子元素,(类似width="**"),要想获得该子元素的值,可以用如下方法
  53. System.out.println(element.elementText("width"));//因为没有,所以输出为null。
  54. }
  55. }
  56. }

java SAXReader的更多相关文章

  1. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  2. java解析XML saxReader.read(xml) 错误:org.dom4j.DocumentException: no protocol

    java解析XML saxReader.read(xml) 错误:org.dom4j.DocumentException: no protocol 完整错误信息: org.dom4j.Document ...

  3. Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: org/dom4j/io/SAXReader

    Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: org/dom4j/io/SAXReader ...

  4. Java进击C#——语法之IO操作

    本章简言 上一章我们对线程同步进行讲解.了解如何去处理可能发生的脏数据.而本章就要讲有关于C#在读取IO文件的时候,常常用到的操作类.这一章的内容会比较少.但是笔者还是总结出来让读者们有一个学习的方向 ...

  5. 在Java中使用xpath对xml解析

    xpath是一门在xml文档中查找信息的语言.xpath用于在XML文档中通过元素和属性进行导航.它的返回值可能是节点,节点集合,文本,以及节点和文本的混合等.在学习本文档之前应该对XML的节点,元素 ...

  6. java对xml节点属性的增删改查

    学习本文之前请先看我的另一篇文章JAVA对XML节点的操作可以对XML操作有更好的了解. package vastsum; import java.io.File; import java.io.Fi ...

  7. java解析xml的三种方法

    java解析XML的三种方法 1.SAX事件解析 package com.wzh.sax; import org.xml.sax.Attributes; import org.xml.sax.SAXE ...

  8. java DOM4J 读取XML

    最近学习Java,在处理XML文档的时候,查阅相关资料,发现了DOM4J这个jre库,相对C#的XML处理来说,功能还算是跟得上 下面展示一篇我自己写的一个XML读取测试 import java.ut ...

  9. 使用poco 的NetSSL_OpenSSL 搭建https 服务端,使用C++客户端,java 客户端访问,python访问(python还没找到带证书访问的代码.)

    V20161028 由于项目原因,需要用到https去做一些事情. 这儿做了一些相应的研究. 这个https 用起来也是折腾人,还是研究了一周多+之前的一些积累. 目录 1,java client 通 ...

随机推荐

  1. Kubernetes DNS的配置

    Kubernetes集群机制通过DNS进行服务名和ip的映射,如果没有配置dns,你可以通过下面命令查询到集群ip kubectl get svc --namespace=kube-system 得到 ...

  2. golang之bufio包的使用

    原文地址:http://www.niu12.com/article/38 github地址:https://github.com/ZQCard/go_api_practice // 参考:https: ...

  3. C#断点续传

    我们经常使用下载工具,如bit精灵.迅雷.FlashGet,这些软件都支持断点续传. 断点续传即下载任务暂停后可以继续,而无需重新下载,即下载时需要通知服务器的起始位置.如果允许多线程进行分片下载,必 ...

  4. <img>元素底部为何有空白及其解决方案

    一.为什么<img>元素底部会有空白? 要理解这个问题,首先要弄明白CSS对于 display: inline 元素的 vertical-align 各个值的含义.vertical-ali ...

  5. 淘宝JAVA中间件Diamond

    以下是转载自网上资料,但是根据步骤可以搭建出diamond配置中心服务器. 项目中需要用到diamond的理由是, 项目中使用了很多定时任务和异步任务.而且这些定时任务和异步任务都是分布式的安排在多个 ...

  6. HTML5 Canvas 绘制库存变化折线 画入库出库柱状图

    代码: <!DOCTYPE html> <html lang="utf-8"> <meta http-equiv="Content-Type ...

  7. Unity3D教程宝典之Web服务器篇:(第一讲)服务器的架设

    转载自风宇冲Unity3D教程学院 引言:本文主要介绍WAMP服务器的架设. 第一部分WAMP介绍;第二部分WAMP安装及使用.                        第一部分WAMP介绍 什 ...

  8. java自定义注解与反射

    java注解与反射一.Java中提供了四种元注解,专门负责注解其他的注解,分别如下 1.@Retention元注解,表示需要在什么级别保存该注释信息(生命周期).可选的RetentionPoicy参数 ...

  9. 【MyBatis学习10】高级映射之多对多查询

    本文来总结一下mybatis中的多对多映射,从第8节的文章中可以看出,用户表和商品表示多对多关系,它们两的多对多是通过订单项和订单明细这两张表所关联起来的,那么这一节主要来总结一下用户表和商品表之间的 ...

  10. git merge rebase的区别及应用场景

    前两天和同事交流发现他在日常开发中跟上游保持同步每次都是用git pull操作,而我一直习惯git fetch然后rebase,发现这两种操作后的log是有些区别的.他每次pull操作之后都会自动生成 ...