需要用jar包 dom4j-1.6.1.jar
字符串xml如下:
<root>
<flw>
<name>aa</name>
<age>22</age>
<instance_info>
<num>1</num>
<code>0</code>
<instance>
<ip>10.1.1.2</ip>
<mask>9999</mask>
</instance>
<instance>
<ip>10.1.1.5</ip>
<mask>717</mask>
</instance>
</instance_info> <instance_info>
<num>2</num>
<code>33</code>
<instance>
<ip>10.1.1.2</ip>
<mask>9999</mask>
</instance>
<instance>
<ip>10.1.1.9</ip>
<mask>878</mask>
</instance>
</instance_info>
</flw>
</root>
解析代码:
import java.io.ByteArrayInputStream;
import java.io.UnsupportedEncodingException;
import java.util.Iterator; import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader; public class XMLParser {
public static void main(String[] args) {
String xml = "<root><flw><name>aa</name><age>22</age><instance_info><num>1</num><code>0</code><instance><ip>10.1.1.2</ip><mask>9999</mask></instance><instance><ip>10.1.1.5</ip><mask>717</mask></instance></instance_info><instance_info><num>2</num><code>33</code><instance><ip>10.1.1.2</ip><mask>9999</mask></instance><instance><ip>10.1.1.9</ip><mask>878</mask></instance></instance_info></flw></root>"; long start = System.currentTimeMillis(); SAXReader reader = new SAXReader();
try {
org.dom4j.Document doc = reader.read(new ByteArrayInputStream(xml
.getBytes("UTF-8")));
org.dom4j.Element root = doc.getRootElement();
org.dom4j.Element element;
org.dom4j.Element element2;
org.dom4j.Element element3;
for (Iterator i = root.elementIterator("flw"); i.hasNext();) {
element = (org.dom4j.Element) i.next();
System.out
.println("name:[" + element.elementText("name") + "]");
System.out.println("age:[" + element.elementText("age") + "]");
for (Iterator j = element.elementIterator("instance_info"); j
.hasNext();) {
element2 = (org.dom4j.Element) j.next();
System.out.println("\tnum:[" + element2.elementText("num")
+ "]");
System.out.println("\tcode:["
+ element2.elementText("code") + "]");
for (Iterator k = element2.elementIterator("instance"); k
.hasNext();) {
element3 = (org.dom4j.Element) k.next();
System.out.println("\t\tip:["
+ element3.elementText("ip") + "]");
System.out.println("\t\tmask:["
+ element3.elementText("mask") + "]");
}
}
}
} catch (DocumentException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
long end = System.currentTimeMillis();
System.out.println("耗时:" + (end - start) + "ms");
}
}

java解析String类型t复杂xml,多级节点,最好的例子的更多相关文章

  1. Java中String类型细节

    Java中String类型细节 一 . String两种初始化方式 1 . String str1= “abc”;//String类特有的创建字符对象的方式,更高效 在字符串缓冲区中检测”abc”是否 ...

  2. Java中String类型详解

    这篇博客是我一直想总结的,这两天一直比较忙,先上传下照片吧,过后有时间再弄成正常的. 本文主要是对Java中String类型的总结,包括其在JVM中是怎么存储的...

  3. Java 如何解析由String类型拼接的XML格式

    String xml = new String(a);打印的xml 的值是 <?xml version= 1.0 encoding=gb2312?><weighData>< ...

  4. 【转载】 Java中String类型的两种创建方式

    本文转载自 https://www.cnblogs.com/fguozhu/articles/2661055.html Java中String是一个特殊的包装类数据有两种创建形式: String s ...

  5. (JAVA)String类型的逻辑语句编译

    项目中遇到了动态配置条件触发相应事件的需求,需要根据String类型的逻辑语句,以及动态获取的数据,计算数据对应的结果,java实现.解决思路及代码实现如下,有需要的同学请自取. 一.需求提取 根据需 ...

  6. Android java传递string类型数据给C

    本文接着实现<Android java传递int类型数据给C>的还未实现的方法: public native String sayHelloInC(String s); 先贴一个工具方法, ...

  7. java的String类型为什么是final

    (转自:http://www.cnblogs.com/ikuman/archive/2013/08/27/3284410.html) 最佳答案: 主要是为了“效率” 和 “安全性” 的缘故.若 Str ...

  8. 【Java】 String类型的==使用

    public class StringDemo { public static void main(String[] args) { String s1 = "abc"; Stri ...

  9. 关于JAVA中String类型的最大长度

    前些天看到一道面试题,题目很容易理解:String的长度限制是多少? 针对这个题目,浏览了网友的回答,大概得到了3个层次的答案. 最浅的层次: 近似计算机内存大小的长度.这是作为一个程序员最浅显的回答 ...

随机推荐

  1. 64位win7旗舰版搭建apache+php+mysql开发环境[转]

      我建议把apache.php.mysql都安装在一个文件夹中,比如:web/apache.web/php.web/mysql 1.安装apache2.2.25,请查看win7下安装VC9版本的ap ...

  2. javascript 中对this关键字的一些理解

    var self = this 可能会觉得奇怪为什么我会定义一个_self的变量, 因为在js里,this不用对于其他的对象语言,他的解析过程与运行过程中this会改变的.这里简单说说js里this的 ...

  3. Linux下使用Mysql

    一.连接MySQL数据库 一个最简单的程序示例: #include <stdio.h> #include "mysql.h" int main() { MYSQL my ...

  4. TEXT文本编辑框3 点击按钮添加文本至文本输入框

    In this exercise a function that loads the texts of an internal table into the text window, is imple ...

  5. 使用OVS

    创建节点: 需要在组件上引用OVS组件WDR_OVS:引用后需要更改添加节点属性值如下: 布局如下: 在view中也添加ovs组件 新建事件方法: ON_EVENT 代码如下: METHOD on_e ...

  6. Eclipse使用总结

    Eclipse使用总结 1.Eclipse中出现无法找到Maven包     症状:出现org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER, 且出现无法找 ...

  7. SQL 事务及实例演示

    简介 事务,英文名称是transaction.是在对数据库进行管理操作过程中一个逻辑单位,由有限的操作序列构成. 其实这个概念很好懂,简单理解就是:事务就是在使用数据库中的一个操作,由一些操作放到一起 ...

  8. HTML5开发桌面应用:选择node-webkit还是有道heX

    近几年,移动应用和web2.0大行其道,相比之下.传统桌面应用程序开发显得相对冷清(包含该领域技术人才的后继力量),但在一些场景下,它依旧有其不可替代的优势. 将HTML5和Node.JS的技术优势. ...

  9. 与内存有关的那些事儿(数组分配空间不够,导致缓冲区溢出,从而strcpy会出现异常)

    这日,我写下如下代码:#include <iostream>int main(void){ char *p = new char[5]; char *t = new char[5]; st ...

  10. BestCoder Round #3HDU 4907

    1. HDU 4907:http://acm.hdu.edu.cn/showproblem.php?pid=4907 中文题我就不说题意了,直接说解题思路吧! ① 第一种思路就是我比赛时的思路,将a数 ...