Java全面解析string類型的xml字符串
解析string類型的xml字符串
我先拼接一個(gè)xml格式的字符串,模擬獲取了這樣的數(shù)據(jù),然后再解析
所需要的包自行導(dǎo)入
StringBuilder sb = new StringBuilder();
sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
sb.append("<root>");
sb.append(" <header>");
sb.append(" <mark>" + "this is a mark!"+ "</mark>");
sb.append(" </header>");
sb.append(" <body>");
sb.append(" <data>");
sb.append(" <first>");
sb.append(" <second>" + "來解析我??!"+ "</second>");
sb.append(" </first>");
sb.append(" </data>");
sb.append(" </body>");
sb.append("</root>");
//開始解析
String str= sb.toString();
Document doc = null;
try {
doc = DocumentHelper.parseText(str);
} catch (DocumentException e) {
e.printStackTrace();
}
Element root = doc.getRootElement();// 指向根節(jié)點(diǎn) <root>
try {
Element mark=root.element("header").element("mark");
Element second=root.element("body").element("data").element("first").element("second");
//獲取xml的節(jié)點(diǎn)內(nèi)容
System.out.println(mark.getTextTrim());
System.out.println(second.getTextTrim());
}catch(Exception e){
e.printStackTrace();
}
運(yùn)行結(jié)果:

解析String類型t復(fù)雜xml,多級節(jié)點(diǎn),最好的例子
需要用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("耗時(shí):" + (end - start) + "ms");
}
}以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Java中String類的常用方法總結(jié)
- Java?String類的理解及字符串常量池介紹
- Java中String類常用方法總結(jié)詳解
- Java基礎(chǔ)之String類使用與字符串比較
- Java中String類常用方法使用詳解
- 帶你一文深入認(rèn)識(shí)Java?String類
- Java String類常用方法梳理總結(jié)
- Java深入淺出講解String類常見方法
- Java詳細(xì)分析String類與StringBuffer和StringBuilder的使用方法
- Java?String類和StringBuffer類的區(qū)別介紹
- Java中String類常用類型實(shí)例總結(jié)
- 深入剖析Java中String類的concat方法
- 詳解Java中String類的各種用法
- 一文帶你初識(shí)java中的String類
- Java String類的性質(zhì)與比較
- 關(guān)于Java中String類字符串的解析
- Java String類字符串的理解與認(rèn)知
- Java-String類最全匯總(上篇)
相關(guān)文章
JavaWeb 實(shí)現(xiàn)驗(yàn)證碼功能(demo)
在 WEB-APP 中一般應(yīng)用于:登錄、注冊、買某票、秒殺等場景,大家都接觸過這個(gè)驗(yàn)證碼操作,今天小編通過實(shí)例代碼給大家講解javaweb實(shí)現(xiàn)驗(yàn)證碼功能,需要的朋友參考下2017-02-02
Java中l(wèi)ambda表達(dá)式的基本運(yùn)用
大家好,本篇文章主要講的是Java中l(wèi)ambda表達(dá)式的基本運(yùn)用,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下2022-01-01
HashMap工作原理_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了HashMap工作原理_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理,需要的朋友可以參考下2017-04-04
ThreadLocal簡介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了ThreadLocal簡介的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
Spring多數(shù)據(jù)源導(dǎo)致配置失效的解決
這篇文章主要介紹了Spring多數(shù)據(jù)源導(dǎo)致配置失效的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01

