递归遍历XML所有节点
- package xml;
- import org.dom4j.Document;
- import org.dom4j.DocumentHelper;
- import org.dom4j.DocumentException;
- import org.dom4j.Element;
- import java.util.*;
- /**
- * @author zouhailin
- * 2013-7-5
- */
- public class XmlTest {
- // private static Map<String, String> xmlmap = new HashMap<String, String>();
- //存储xml元素信息的容器
- private static List<String> elemList = new ArrayList<String>();
- //要测试的xml对象
- private static String srcXml = "<?xml version=\"1.0\" encoding=\"GBK\"?>\n" +
- "<doc>\n" +
- " <person>\n" +
- " <name>某人</name>\n" +
- " <adds> \n" +
- " <add ID=\"10002\">\n" +
- " <BS>10002</BS>\n" +
- " <note>西安市太白路</note>\n" +
- " </add>\n" +
- " <add ID=\"\">\n" +
- " <BS>10002</BS>\n" +
- " <note>空ID节点啊</note>\n" +
- " </add>\n" +
- " <add>\n" +
- " <BS>10002</BS>\n" +
- " <note>空ID节点啊</note>\n" +
- " </add>\n" +
- "\t\t\t<add ID=\"10001\">\n" +
- "\t\t\t\t<BS xmlns=\"10001\"/>\n" +
- " <note>西安市太白路2</note>\n" +
- " </add>\n" +
- "\t\t</adds>\n" +
- " </person>\n" +
- " <other>\n" +
- " <name ID=\"HEHE\">ASDF</name>\n" +
- " </other>\n" +
- "</doc>";
- 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(xpath+" "+value);
- } else {
- //有子元素
- for (Iterator it = elements.iterator(); it.hasNext();) {
- Element elem = (Element) it.next();
- //递归遍历
- getElementList(elem);
- }
- }
- }
- public String getListString(List<String> elemList) {
- StringBuffer sb = new StringBuffer();
- for (Iterator<String> it = elemList.iterator(); it.hasNext();) {
- String str = it.next();
- sb.append(str+"\n");
- }
- return sb.toString();
- }
- }
递归遍历XML所有节点的更多相关文章
- 递归遍历XML节点属性和属性值
public static XmlDocument FileMergedIntoXML(string strXmlPathPublic) { string strXmlPathPublic = str ...
- 【转】循环递归遍历XML文档或按某要求遍历XML文档
<?xml version="1.0" encoding="UTF-8"?> <catalog> <cd> <titl ...
- python 遍历xml所有节点
1.xml文件 2.代码 #coding:utf-8 import xml import xml.etree.ElementTree as ET """ 实现从xml文件 ...
- jquery递归遍历xml文件,形成ul-li序列,生成树结构(使用了treeview插件)
treeview插件从这里获得,下载的文件中有demo,看demo文件夹里面的index.html文件就差不多知道如何使用该控件了,在我做的项目里用到的部分代码截图如下(在引用下面的js文件前要先引用 ...
- MySQL 树节点递归遍历所以子节点
DELIMITER $$ DROP FUNCTION IF EXISTS `getChildList`$$ CREATE FUNCTION `getChildList`(rootId INT) RET ...
- 递归遍历所有xml的节点及子节点
import java.io.File; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; i ...
- 使用dom4j讲xml字符串递归遍历成Map
package test; import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import j ...
- 问题:jQuery中遍历XML文件时候,获取子节点children不支持的情况(已解决)
问题描述: 今天在写一个基于 jquery 的读取xml文件的程序时候,需要遍历xml的节点. 代码片段如下: function parse_xml_node(parent,result){ // r ...
- [java开发篇][dom4j模块] 遍历xml文件
http://blog.csdn.net/chenleixing/article/details/44353491 在android studio 导入dom4j库(build-gradle(Moud ...
随机推荐
- hadoop 磁盘限额配置
配置方法: 在 hdfs-site.xml 里配置如下参数,注意,那个 value 的值是配置该磁盘保留的DFS不能使用的空间大小,单位是字节. (如果多块硬盘,则表示为每块硬盘保留这么多空间) &l ...
- openCV之头文件分析
我们利用openCV开源库进行项目开发时,往往要牵涉到头文件的添加问题,而openCV中头文件众多,该如何选择呢?下面对openCV2.4.10的头文件进行一个简单的梳理,以便能够快速的添加对应的头文 ...
- java中int,float,long,double取值范围,内存泄露
java中int,float,long,double取值范围是多少? 写道 public class TestOutOfBound { public static void main(String[] ...
- Linux 双网卡绑定技术
bond技术是在linux2.4以后加入内核. 一般步骤是1.把bonding模块加入内核, 2 编辑要绑定的网卡设置,去除地址设定 3 添加bond设备,设置地址等配置 4 重启网络 5 在交换机 ...
- hdu 1224 Free DIY Tour(最长的公路/dp)
http://acm.hdu.edu.cn/showproblem.php? pid=1224 基础的求最长路以及记录路径. 感觉dijstra不及spfa好用,wa了两次. #include < ...
- 基于libevent, libuv和android Looper不断演进socket编程 - 走向架构师之路 - 博客频道 - CSDN.NET
基于libevent, libuv和android Looper不断演进socket编程 - 走向架构师之路 - 博客频道 - CSDN.NET 基于libevent, libuv和android L ...
- Android最方便的数据库--LitePal
郭最近看到神分析LitePal相框,我感觉很强烈,尝试了一下,真的好,我不知道,如果你不习惯学习,那么各不相同,我觉得很合适 看完之后,思想,对于我来说,,实体到set颂值,如果数据非常多,那么你可以 ...
- C# 开发Chrome内核浏览器(WebKit.net)
原文地址:http://www.cnblogs.com/linyijia/p/4045333.html
- codeforces#256DIV2 D题Multiplication Table
题目地址:http://codeforces.com/contest/448/problem/D 当时是依照找规律做的,规律倒是找出来了,可是非常麻烦非常麻烦. . 看到前几名的红名爷们3分钟就过了, ...
- Android学习-各种对话框
在android的编程中,对话框的用处是非常多的,然而,有时对对话框的需求也是不一样的,那么现在,就总结对话框的种类,以及事件的处理形势. 1.简单的对话框 public void showDialo ...