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;

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/272817.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【基础】C#异常处理的总结

一、异常处理的理解&#xff1f;异常处理是指程序在运行过程中&#xff0c;发生错误会导致程序退出&#xff0c;这种错误&#xff0c;就叫做异常。因此处理这种错误&#xff0c;就称为异常处理。二、异常处理如何操作&#xff1f;C# 异常处理时建立在四个关键词之上的&#xff…

Java Web 路径问题

可能在做文件上传或者 图片加载&#xff0c;资源加载 时候用到文件相对服务器地址 System.out.println(request.getRemoteUser()); //客户端用户System.out.println(request.getRemoteAddr()); //客户端IPSystem.out.println(request.getRemoteHost()); //客户端主机名Syst…

mysql 多字节编码漏洞_phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)

漏洞详情范围 phpMyAdmin 4.8.0和4.8.1原理 首先在index.php 50-63行代码$target_blacklist array (import.php, export.php);// If we have a valid target, lets load that script insteadif (! empty($_REQUEST[target])&& is_string($_REQUEST[target])&&…

.Net开发的两个小技巧

一、符号的妙用1、可以作为保留关键字的标识符C#规范当中&#xff0c;不允许使用保留关键字&#xff08;class、bool等&#xff09;当作普通的标识符来命名&#xff0c;这时候符号作用就体现出来了&#xff0c;可以通过符号前缀把这些保留关键字可以当作普通的字符使用。比如&a…

Codeforces Round #FF (Div. 1) A. DZY Loves Sequences

原题链接&#xff1a;http://codeforces.com/problemset/problem/446/A 题意&#xff1a;给一个长度为n的序列&#xff0c;最多可以修改一个位置的数&#xff0c;求最长连续上升子序列。 题解&#xff1a;当a[i1] > a[i-1]2的时候&#xff0c;可以通过改变a[i]的值来使前后两…

25句张小娴经典爱情语录,句句穿心!

1、女人在床上流的眼泪&#xff0c;比在任何一个地方多。男人在床上说的谎话&#xff0c;也比在任何一个地方多。2、承诺本来就是男人与女人的一场角力&#xff0c;有时皆大欢喜&#xff0c;大部份的情况却两败俱伤。3、爱情正是一个将一对陌生人变成情侣&#xff0c;又将一对情…

mysql 数据库事务处理_Mysql事务处理问题 - mysql数据库栏目 - 自学php

今天和同学讨论起数据库事务处理的问题&#xff0c;感觉讨论中明白了一些&#xff0c;有些知识看过了&#xff0c;但是没有实际使用还是不理解。事务处理就是将一系列操作当做一个原子操作&#xff0c;要么全部执行成功&#xff0c;如果执行失败则保留执行期的状态。通过提交和…

[LeetCode] Palindrome Linked List

Given a singly linked list, determine if it is a palindrome. 一开始想用栈&#xff0c;但是试来试去发现写不出来遂放弃&#xff0c;后来想想再不济可以转换成数组然后分别两头扫&#xff0c;但是这样就用了O(n) 的空间&#xff0c;再进一步&#xff0c;可不可以在链表里模…

【原创】Ajax的用法总结

一、什么是AjaxAjax英文全称为“ Asynchr JavsScript and XML”&#xff08;异步的JavaScript和XML&#xff09;&#xff0c;是一种创建交互式网页的开发技术。二、Ajax技术的核心Ajax是一系列相关技术的融合&#xff0c;其核心包括XMLHttpRequest、JavsScript和DOM技术&#x…

gprs java_WISMO模块GPRS上网设置的过程

WISMO模块GPRS上网设置的过程一) AT指令设置部分(1) ATCGCLASS“B”置为“网络WISMO模块GPRS上网设置的过程一) AT指令设置部分(1) ATCGCLASS“B”置为“B”模式。(2) ATCGDCONT1&#xff0c;“IP”&#xff0c;“CMNET”设置APN。(3) ATCSQ 检查信号 若返回10—31&#xff0c…

loadrunner性能测试步骤

性能测试过程分为4个阶段&#xff1a;设计、构建、执行、分析/诊断/调节具体的工作流程如下图 设计  >  构建  >  执行   >  分析/诊断/调节 收集要求    设置测试环境 基准测试    诊断瓶颈 设计测试策略  记录测试脚本 性能测试     调…

Asp.Net生命周期的详解

一&#xff0e;Asp.Net页面生命周期的概念当我们在浏览器地址栏中输入网址&#xff0c;回车查看页面时&#xff0c;这时会向服务器端IIS&#xff09;发送一个request请求&#xff0c;服务器就会判断发送过来的请求页面&#xff0c;当完全识别 TTP页面处理程序类后&#xff0c;A…

java chain_java 8中 predicate chain的使用

java 8中 predicate chain的使用简介Predicate是一个FunctionalInterface&#xff0c;代表的方法需要输入一个参数&#xff0c;返回boolean类型。通常用在stream的filter中&#xff0c;表示是否满足过滤条件。boolean test(T t);基本使用我们先看下在stream的filter中怎么使用P…

前段技术学习计划

资料&#xff1a; 著作权归作者所有。 商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 作者&#xff1a;陈禹鲁 链接&#xff1a;http://www.zhihu.com/question/19809484/answer/35544452 来源&#xff1a;知乎 第一本&#xff0c;入门 《Head first HTML&…

指针的概念

在C语言中&#xff0c;内存单元的地址称为指针&#xff0c;专门用来存放地址的变量&#xff0c;有时对地址&#xff0c;指针和指针变量不区分&#xff0c;统称指针。&#xff08;地址指针&#xff09; 一般情况下&#xff0c;最前面的存储类型通常会省略 指针在说明的同时&…

整理一些提高C#编程性能的技巧

1、使用StringBuilder代替使用string 连接符 ""说明&#xff1a;String类对象是不可变的&#xff08;只读&#xff09;&#xff0c;一旦创建该对象&#xff0c;就不能修改该对象的值。对象String对象的重新赋值&#xff0c;本质上是重新创建了一个String对象并将新的…

python爬知识星球付费数据_用python爬取知识星球

去年我们做过一个叫「学长问答」的社群活动&#xff0c;里面沉淀了大量有价值的互动信息&#xff0c;后来因为各种原因终止了。今天和涂腾聊起来&#xff0c;觉得这些信息就这么沉寂了太浪费。所以就试着用python爬取了知识星球的内容。这个过程又学习了一些新的知识&#xff0…

HTML学习(1)

1、缩写和首字母缩写<abbr><acronym> <abbr title"etcetera">etc.</abbr> <acronym title"World Wide Web">WWW</acronym> 2、块引用&#xff08;短&#xff09; <p>A: <q>B</q>C</p> 显示结…

常用的7个SQl优化技巧

作为程序员经常和数据库打交道的时候还是非常频繁的&#xff0c;掌握住一些Sql的优化技巧还是非常有必要的。下面列出一些常用的SQl优化技巧&#xff0c;感兴趣的朋友可以了解一下。1、注意通配符中Like的使用以下写法会造成全表的扫描&#xff0c;例如&#xff1a;select id,n…

toolbar java_Java ToolBar.layout方法代码示例

import org.eclipse.swt.widgets.ToolBar; //导入方法依赖的package包/类protected ToolBar createToolbar() {final ToolBar t new ToolBar(composite, SWT.FLAT | SWT.LEFT | SWT.HORIZONTAL | SWT.WRAP);final GridData d new GridData(SWT.FILL, SWT.TOP, false, false);…