java xml 递归_Java递归遍历XML所有元素
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import java.util.*;
/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2008-4-14 14:02:12
* Note: Java递归遍历XML所有元素
*/
public class XmlTest {
// private static Map xmlmap = new HashMap();
//存储xml元素信息的容器
private static List elemList = new ArrayList();
//要测试的xml对象
private static String srcXml = "<?xml version=\"1.0\" encoding=\"GBK\"?>\n" +
"\n" +
" \n" +
" 某人\n" +
" \n" +
" \n" +
" 10002\n" +
" 西安市太白路\n" +
" \n" +
" \n" +
" 10002\n" +
" 空ID节点啊\n" +
" \n" +
" \n" +
" 10002\n" +
" 空ID节点啊\n" +
" \n" +
"\t\t\t\n" +
"\t\t\t\t\n" +
" 西安市太白路2\n" +
" \n" +
"\t\t\n" +
" \n" +
" \n" +
" ASDF\n" +
" \n" +
"";
public static void main(String args[]) throws DocumentException {
XmlTest test = new XmlTest();
Element root = test.getRootElement();
test.getElementList(root);
String x = test.getListString(elemList);
System.out.println("-----------原xml内容------------");
System.out.println(srcXml);
System.out.println("-----------解析结果------------");
System.out.println(x);
}
/**
* 获取根元素
*
* @return
* @throws DocumentException
*/
public Element getRootElement() throws DocumentException {
Document srcdoc = DocumentHelper.parseText(srcXml);
Element elem = srcdoc.getRootElement();
return elem;
}
/**
* 递归遍历方法
*
* @param element
*/
public void getElementList(Element element) {
List elements = element.elements();
if (elements.size() == 0) {
//没有子元素
String xpath = element.getPath();
String value = element.getTextTrim();
elemList.add(new Leaf(xpath, value));
} else {
//有子元素
for (Iterator it = elements.iterator(); it.hasNext();) {
Element elem = (Element) it.next();
//递归遍历
getElementList(elem);
}
}
}
public String getListString(List elemList) {
StringBuffer sb = new StringBuffer();
for (Iterator it = elemList.iterator(); it.hasNext();) {
Leaf leaf = it.next();
sb.append(leaf.getXpath()).append(" = ").append(leaf.getValue()).append("\n");
}
return sb.toString();
}
}
/**
* xml节点数据结构
*/
class Leaf {
private String xpath; //
private String value;
public Leaf(String xpath, String value) {
this.xpath = xpath;
this.value = value;
}
public String getXpath() {
return xpath;
}
public void setXpath(String xpath) {
this.xpath = xpath;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
java xml 递归_Java递归遍历XML所有元素相关推荐
- java xml 合并_Java中合并XML文档的设计与实现
为了读写XML文件,需要导入如下JAVA包,"//"后为注释说明,笔者的环境是JDK1.3.1,在JDK 1.4.0中测试也通过. Import java.io. *; //Jav ...
- java bean与xml转换_Java Bean与xml互相转换的方法分析
本文实例讲述了Java Bean与xml互相转换的方法.分享给大家供大家参考,具体如下: XML和Java Bean互相转换是一个很有用的功能,因为两者有着前后合作的关系,但解析的过程比较痛苦.下面介 ...
- java 解析xml 对象_Java反射——读取XML文件,创建对象
读取XML文件,创建对象 config.xml import java.io.*; import java.lang.reflect.Constructor; import javax.xml.par ...
- java反射 创建对象_Java反射――读取XML文件,创建对象
config.xml <?xml version="1.0" encoding="UTF-8"?> import java.io.*; import ...
- java 判断对象是否是xml格式_java对象与xml格式之间的转换
java对象是可以直接与xml相互转换的,但需要导入包:xstream-1.3.1.jar,在创建对象的时候,注意一定要new一个DomDriver: 成功的测试代码如下: package com.x ...
- java构建xml参数_Java中使用XML创建EMAIL模板
邮件模板 让我们来看看邮件模板的格式.模板是XML文件,它包含一个根元素和一系列根的子元素.根元素是.必要的子元素是, , 和 .可选的子元素是 , , 和 .如果你使用过邮件系统,那么你可以推导出这 ...
- java 文件 递归_JAVA实现遍历文件夹下的所有文件(递归调用和非递归调用)
JAVA 遍历文件夹下的所有文件(递归调用和非递归调用) 1.不使用递归的方法调用. public void traverseFolder1(String path) { int fileNum = ...
- java xml 学习_java学习(四)xml
1.xml文件 xml(可扩展标签语言,标签自定义,用来存储数据以及配置文件).书写规范为: 1)区分大小写: 2)应该有一个跟标签: 3)标签必须关闭:如 4)属性必须用引号引起来:如: 5)标签体 ...
- 扫描java类文件_java递归与非递归实现扫描文件夹下文件的实例代码
java递归与非递归实现扫描文件夹下所有文件 java扫描指定文件夹下面的所有文件,供大家参考,具体内容如下 扫描一个文件夹下面的所有文件,因为文件夹的层数没有限制可能多达几十层几百层,通常会采用两种 ...
最新文章
- 《因果学习周刊》第6期:因果推荐系统
- 解决无法安装cnpm,cnpm卡顿问题
- 极力推荐5款我一直在使用的Chrome优秀插件!
- 基本的EJB参考,注入和查找
- 无线业务需求的线路设计以及拓扑图实现
- php数据库删除数据,php数据库删除数据的简单示例
- 信息学奥赛一本通C++语言——1025:保留12位小数的浮点数
- scrapy模拟登陆人人网
- 异步线程AsyncTask_2示例(07)
- Web开发面临的挑战主要有哪些?
- 微信小程序中使用tabBar
- 卡西欧计算机做英语,卡西欧的这个小萌物 原来是台英语学习机
- Snappy Ubuntu Core 登陆 Bubblegum-96 单板机
- VS2015中更改项目名称
- 日记侠:如何用手机月入万元,只需从这5步开始
- JPA 查询 未查询到时返回的list的size为0 但是引用并不为空
- Altium Designer 18中的Violations Associated with Components
- 二分幂,快速幂,矩阵快速幂,快速乘
- 我把自己的java库发布到了maven中央仓库,从此可以像Jackson、Spring的jar一样使用它了
- 淘宝二手优必选舵机保姆级驱动教程,看不懂来打我(自行修改ID,有HAL库驱动函数)
热门文章
- 【pyqt5】——入门级模板(ui文件+ui转py文件+逻辑py文件)(消息提示框)
- 【图像处理】——比特平面原理和实现方法(全网较全面,含所有比特位图的分层方法)
- 【图像处理】——图像滤波(Python+opencv实现三种方法:均值滤波、中值滤波、高斯滤波等)
- win10+tensorflow faster-RCNN 训练自己的数据集
- 橱柜高度与身高对照表_下一套房子装修,橱柜就照这样打,布局尺寸这么详细,不信不好用...
- aop在项目中的实际运用_mypy在实际项目中的应用
- 金蝶系统服务器要求,金蝶服务器安装及其相关要求.doc
- html meta页面自适应,【转载·收藏】 html5手机网站自适应需要加的meta标签
- mysql 存储过程月单拆天单_MySQL之存储过程按月创建表的方法步骤
- Vue.js + Nuxt.js 项目中使用 Vee-validate 表单校验