Java_数据交换_dom4j_01_解析xml
1.说明
详细原理以后再研究,先将例子存着
2.代码
2.1 xml内容
<?xml version="1.0" encoding="UTF-8"?>
<weixin:Qi-config xmlns:weixin="aurora.plugin.weixin">
<instnces>
<weixin:Qiyeance token="wei胜多负少xin" corpId=防守打法b5a4889c1e12" encodingAESKey="z3s7Tgh3mknc2电饭锅w5MevwYocgmEL1Gtw" appName="规定发给c"/>
</instnces>
<tokenTasks>
<weixin:Qiyask groupname="hec" corpId="wwa4889c1e12" secrect="kOpZjWDSmdhghOB7fydfFW6m0-sSMOQYV_Cko" />
</tokenTasks>
</weixin:Qi-config>
2.2java 代码
package com.ray.test; import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test; public class TestParseXMl {
Map<String, Map<String,String>> weiXinConfigMap=new HashMap<String, Map<String,String>>();
/**
* 获取文件的document对象,然后获取对应的根节点
* @throws Exception
*/
@Test
public void testGetRoot() throws Exception{
SAXReader sax=new SAXReader();//创建一个SAXReader对象
//File xmlFile=new File("src/main/java/aurora/plugin/weixin/qiyewexin.config");//根据指定的路径创建file对象
File xmlFile=new File("src/com/ray/test/qiyewexin.config");//根据指定的路径创建file对象
Document document=sax.read(xmlFile);//获取document对象,如果文档无节点,则会抛出Exception提前结束
Element root=document.getRootElement();//获取根节点
this.getNodes(root);//从根节点开始遍历所有节点 for(String key:weiXinConfigMap.keySet()){
System.out.println("节点名字:key"+key);
Map<String ,String> attMap=weiXinConfigMap.get(key);
for(String key2:attMap.keySet()){
System.out.println("属性名:"+key2+ ",属性值:"+attMap.get(key2));
}
} } /**
* 从指定节点开始,递归遍历所有子节点
* @param node
*/
public void getNodes(Element node ){
System.out.println("--------------------"); //当前节点的名称、文本内容和属性
System.out.println("当前节点名称:"+node.getName());//当前节点名称
System.out.println("当前节点的内容:"+node.getTextTrim());//当前节点名称
List<Attribute> listAttr=node.attributes();//当前节点的所有属性的list
Map<String,String> attrMap=new HashMap<String,String>(); for(Attribute attr:listAttr){//遍历当前节点的所有属性
String name=attr.getName();//属性名称
String value=attr.getValue();//属性的值
System.out.println("属性名称:"+name+"属性值:"+value);
//将微信配置属性存入map
if("QiyeWeixin-instance".equals(node.getName())||"QiyeToken-task".equals(node.getName())){
attrMap.put(name, value);
}
} //递归遍历当前节点所有的子节点
List<Element> listElement=node.elements();//所有一级子节点的list
for(Element e:listElement){//遍历所有一级子节点
this.getNodes(e);//递归
} if("QiyeWeixin-instance".equals(node.getName())||"QiyeToken-task".equals(node.getName())){
weiXinConfigMap.put(node.getName(), attrMap);
}
} /**
* 从指定节点开始,递归遍历所有子节点
* @param node
*/
public void getNodes0(Element node){
System.out.println("--------------------"); //当前节点的名称、文本内容和属性
System.out.println("当前节点名称:"+node.getName());//当前节点名称
System.out.println("当前节点的内容:"+node.getTextTrim());//当前节点名称
List<Attribute> listAttr=node.attributes();//当前节点的所有属性的list
for(Attribute attr:listAttr){//遍历当前节点的所有属性
String name=attr.getName();//属性名称
String value=attr.getValue();//属性的值
System.out.println("属性名称:"+name+"属性值:"+value);
} //递归遍历当前节点所有的子节点
List<Element> listElement=node.elements();//所有一级子节点的list
for(Element e:listElement){//遍历所有一级子节点
this.getNodes(e);//递归
}
} }
Java_数据交换_dom4j_01_解析xml的更多相关文章
- 常用两种数据交换格式之XML和JSON的比较
目前,在web开发领域,主要的数据交换格式有XML和JSON,对于XML相信每一个web developer都不会感到陌生: 相比之下,JSON可能对于一些新步入开发领域的新手会感到有些陌生,也可能你 ...
- 两种常用的数据交换格式:XML和JSON
不同编程语言之间的数据传输,需要一种通用的数据交换格式,它需要简洁.易于数据储存.快速读取,且独立于各种编程语言.我们往往传输的是文本文件,比如我们都知道的csv(comma seperated va ...
- Java_数据交换_JAXB_用法入门
一.前言 最近有个需求,需要进行xml 与 bean 的相互转化. 使用 JAXB 可完成这个需求. 二.概述 JAXB(Java Architecture for XML Binding) 是一个业 ...
- 数据交换格式之 - XML
XML简介 XML是一种可扩展的标记语言,被设计用来传输和存储数据.传输数据. 需要自定义标签,自我描述性,XML是W3C的推荐标准: XML的特点与作用 特点: xml与操作系统.编程语言的开发平台 ...
- Java_数据交换_Jackson_用法入门
一.用法 二.参考资料 1.官方 1.Java下利用Jackson进行JSON解析和序列化 2.
- Java_数据交换_Gson_00_资源帖
1.Gson将字符串转换成JsonObject和JsonArray 2.Gson 解析教程 3.Gson全解析(上)-Gson基础
- Java_数据交换_fastJSON_01_用法入门
一.用法 1.序列化—将Object转为Json对象 Object data=JSON.toJSON( MyObject ); 注:本文的Object可以是Map.List.javaBean等 需求: ...
- XML和JSON两种数据交换格式的比较
在web开发领域,主要的数据交换格式有XML和JSON,对于在 Ajax开发中,是选择XML还是JSON,一直存在着争议,个人还是比较倾向于JSON的.一般都输出Json不输出xml,原因就是因为 x ...
- Java 常见数据交换格式——xml、json、yaml
目录 数据交换格式介绍 XML 使用DOM方式解析 使用SAX方式解析 使用DOM4J方式解析 使用JDOM方式解析 JSON 使用JSONObject方式将数据转换为JSON格式 利用JSONObj ...
随机推荐
- 【JavaScript】BOM和DOM
在第一篇JavaScript视频总结博客中.是对JavaScript做了一个宏观的认识.当中,不知道大家可否还记得.JavaScript的核心部分包含哪些? JavaScript的核心部分主要包含三个 ...
- hdu 5285 wyh2000 and pupil(二染色)
第一次用vector解得题.值得纪念,这道题是二染色问题,我用bfs解得.就是染色,推断,计数问题,其 实挺简单的,就是得判一下特殊情况,当n<2的时候就不能有解,由于题目要求每一个组至少有一个 ...
- DrawRightEditText自定义EditText实现有内容时右侧图标按钮显示无内容时右侧图标按钮隐藏加上为空时晃动动画(二)
经过大神指导,上面封装的还不够全面,触摸事件应该也放进自定义中去,那么问题来了,怎么区分呢!,这就涉及到了自定义属性的介绍了 我通过设置属性来判断在onTouch事件中应该进行什么操作,接下来看看改良 ...
- 第三方苹果开发库之ASIHTTPRequest(翻译版)
本文转载至 http://www.cnblogs.com/daguo/archive/2012/08/03/2622090.html 来自:http://www.dreamingwish.com/ ...
- python 基础 9.4 游标
一. 游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果. 用户可以用SQL 语句逐一从游标中获取记录,并赋值给主变量,交由python 进一步处理,一组主变量一次只能存放一条 ...
- 九度OJ 1199:找位置 (计数)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2083 解决:1010 题目描述: 对给定的一个字符串,找出有重复的字符,并给出其位置,如:abcaaAB12ab12 输出:a,1:a,4 ...
- git生成public key
1 配置user name和email git config --global user.name "xxx" git config --global user.email &qu ...
- mac上傻瓜式java安装环境配置
适用于mac新手用户或者黑苹果用户 首先,打开终端 输入 java -version 检查是否已安装好Java运行环境 显示我现在电脑没有安装 如果返回版本号,说明运行环境成功 对于windows用过 ...
- activiti踩坑
最近在学习activiti,偶然间遇到一个错误:加载引擎的时候报错,显示空指针错误,跟代码发现初始化配置文件返回为null.几经排查,可能是因为我发布流程后又清空了数据库数据导致的.然后我把表全部删除 ...
- 选股公式blog+节选
<大智慧软件选股_大智慧软件如何选股>——一般性操作 http://jingyan.baidu.com/article/fa4125acb2028d28ac70923e.html < ...