使用dom4j中SAXReader解析xml数据
  public ApiConfig(String configFilePath) throws DocumentException{
         SAXReader reader = new SAXReader();
         File xml=new File(configFilePath);
         Document document = reader.read(xml);
         //获取根元素
         Element rootElement = document.getRootElement();
         //将根元素下"rootUrl"元素的值去除空格后,赋值给一个String
         rootUrl = rootElement.element("rootUrl").getTextTrim();
         //注解:取消警告,将根元素下获取到的所有"params"的子元素赋值到List中
         @SuppressWarnings("unchecked")
         List<Element> paramElements = rootElement.element("params").elements(
                 "param");
         //对List进行循环,将获取到的值put到HashMap中
         paramElements.forEach((ele)->{
             params.put(ele.attributeValue("name").trim(),
                     ele.attributeValue("value").trim());
         });
         @SuppressWarnings("unchecked")
         List<Element> headerElements = rootElement.element("headers").elements(
                 "header");
         headerElements.forEach((ele)->{
             headers.put(ele.attributeValue("name").trim(),
                     ele.attributeValue("value").trim());
         });
         Element projectEle = rootElement.element("project_name");
         if(projectEle!=null){
             ReportUtil.setReportName(projectEle.getTextTrim());
         }
     }        
   private Map<String,String> params = new HashMap<String, String>();
     private Map<String,String> headers = new HashMap<String, String>();
代码解析:
1、读取xml数据
SAXReader可以通过多种方式读取xml数据,并返回Document格式的对象。通过查看源码,可以看出read()方法接收File,InputStream和URL等格式的参数来读取相应的xml数据。读取xml文档和xml格式的字符串两种方式。当然,字符串要根据相应的编码转成输入流才能被SAXReader读取。
2、解析xml数据
读取到Document对象后,我们使用getRootElement()方法获取根元素,返回的是一个Element对象。
3、获取子元素数据
获取根元素后,便可以一层一层的去获取他的子元素信息。如果知道子元素的标签名称,便可以直接调用element("name")方法获取该子元素。如果不知道子元素的名称,或者想直接获取该元素下的全部子元素,可以调用elements()方法获取一个包括全部元素的list,然后进行下一步的处理。
4、输出元素信息
调用getName()方法获取当前元素的元素名,attributeValue()获取属性名。如果当前元素没有子元素,则调用getText()方法获取元素值。
使用dom4j中SAXReader解析xml数据的更多相关文章
- JAVA  DOM4j解析XML数据到自定义javabean
		我们获取xml中的数据,一般以面向对象的思想去处理这些数据.因此,我们需要自定义类来封装解析出来的数据,以方便我们操作这些数据. 自定义的java类,称为javabean. 自定义Contact类代码 ... 
- 使用dom4j创建和解析xml文件
		使用dom4j创建和解析xml文件 在项目开发中,我们经常会遇到xml文件的创建和解析从别人接口得到的xml文件,而我们最常使用的组件是dom4j. 下面我就以代码来讲解一下如何使用dom4j来创建x ... 
- 解析XML数据
		在 Java 程序中读取 XML 文件的过程称为解析 XML 解析 XML 文件的方式 1) DOM 解析 (java 官方提供) 2) SAX 解析(java 官方提供) 3) JDOM 解析(第三 ... 
- dom4j生成和解析xml文件
		dom4j生成和解析xml文件 要生成和解析如下格式的xml文件: <?xml version="1.0" encoding="UTF-8"?> & ... 
- DOM4J生成、解析XML实例
		import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.Iterato ... 
- 解析xml数据存入bean映射到数据库的 需求解决过程
		解析xml数据存入bean映射到数据库的 需求解决过程2017年12月19日 15:18:57 守望dfdfdf 阅读数:419 标签: xmlbean 更多个人分类: 工作 问题编辑版权声明:本文为 ... 
- iOS解析XML数据
		iOS中解析XML数据的类是 NSXMLParser,详细使用方法如下: 假设现在在内存中有XML的二进制数据对象(NSData):data(该数据可能来自网络,也可能是本地的文件数据),设置NSX ... 
- Android网络之数据解析----SAX方式解析XML数据
		[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ... 
- 【iOS-cocos2d-X 游戏开发之九】Cocos2dx利用CCSAXParser解析xml数据&CCMutableDictionary使用与注意!
		本站文章均为李华明Himi原创,转载务必在明显处注明:转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/iphone-cocos2dx/694.html ☞ ... 
随机推荐
- web字体分析
			一.衬线字体与非衬线字体 衬线体(serif)和无衬线体(sans-serif)的分类起源于英文字体界. 衬线体(serif)-Georgia-Times 「衬线」指的是字形笔画在首位的装饰和笔画的粗 ... 
- linux源码安装服务器所需要的一些依赖库(待完善)
			apaeche :yum -y install gcc gcc-c++ zlib zlib-devel openssl openssl-devel cmake kernel-devel pcre-de ... 
- shell 实例
			转载自:https://github.com/liquanzhou/ops_doc 这里只作为笔记使用,不做他用 shell实例手册 0 说明{ 手册制作: 雪松 更新日期: 2018-09-1 ... 
- docker下创建crontab定时任务失败
			创建过程 基础镜像采用的centos7.2,需要安装一下crontab,在dockerfile中加以下语句就可以了: # crontab jobs RUN yum -y install crontab ... 
- 力导向图Demo
			<html> <head> <meta charset="utf-8"> <title>力导向图</title> < ... 
- Diffuse贴图+Lightmap+Ambient
			shader里面光照计算毕竟还是比较复杂的,于是想到下面的性能相对好一些的方案. 美术提供一张Diffuse贴图,一张lightmap贴图,然后在应用一个自定义的全局的环境光效果,来模拟静态的光照. ... 
- 使用SecureCRT / win7远程桌面连接ubuntu配置记录(有更新)
			2017-03-03 更新于末尾 1.Windows7 — Ubuntu 远程桌面连接中 Tab 键不能补全的解决办法 2.xrdp远程连接ubuntu无法使用原机的中文输入法 2017-02-22 ... 
- Java窗体居中显示的2种方法
			第1种方法: //setSize(300, 200); pack(); // 得到显示器屏幕的宽.高 int width = Toolkit.getDefaultToolkit().getScreen ... 
- Nginx 反向代理获取设备真实的IP地址
			package com.das.common.util; import org.apache.commons.lang3.StringUtils; import org.springframework ... 
- 微信的NATIVE支付提示201商户订单号重复的解决方案
			无论采取模式一还是模式二,进行预支付ID获取的时候应当确保订单号的唯一性,否则就会造成第二次扫码后的重复提醒. 解决方案: 以预支付ID处理为例: 商城: 1.创建log_id数据表如:out_tra ... 
