java 值Document解析xml詳細(xì)介紹
java 值Document解析xml詳細(xì)介紹
使用jar包:jdom.jar
配置文件格式 global.xml

一、獲取輸入的值組成的結(jié)點(diǎn)
我們將每個(gè)結(jié)點(diǎn)使用“.” 拼接起來, 如結(jié)點(diǎn)i ,拼接為abc.def.i, 注意不包含root。解析每個(gè)結(jié)點(diǎn)的名字。
/**
* 獲取對(duì)應(yīng)結(jié)點(diǎn)的名字
* @param name 不包含root結(jié)點(diǎn)的拼接,ie: abc.def.i
* @return
*/
private String[] parsePropertyName(String name) {
//結(jié)點(diǎn)序號(hào)從0開始
int size = name.split("\\.").length;
String[] parms =name.split("\\.");
return parms;
}
二、獲取對(duì)應(yīng)結(jié)點(diǎn)的值
2.1、結(jié)點(diǎn)為<name valueName=”value123”>的形式
/**
* abc.def.i結(jié)點(diǎn)下有個(gè)結(jié)點(diǎn)為:
* <name valueName="value123">
* 獲取對(duì)應(yīng)結(jié)點(diǎn)的value<br>
* @param name 結(jié)點(diǎn)的值(name,是不包含root結(jié)點(diǎn), 使用"."拼接的, ie: abc.def.i)
* @param defaultName 沒有獲取到該節(jié)點(diǎn)內(nèi)容, 返回默認(rèn)值
* @return
*/
public synchronized String getPropertyValue(String name, String valueName) {
//獲取根結(jié)點(diǎn)對(duì)象
Element element = doc.getRootElement();
//獲取各級(jí)結(jié)點(diǎn)對(duì)應(yīng)的屬性
String[] parms = parsePropertyName(name);
for (String parm : parms) {
element = element.getChild(parm);
}
//得到無兒子結(jié)點(diǎn)的element的屬性值
return element.getAttributeValue(valueName);
}
2.2. 結(jié)點(diǎn)為 <i>8</i>的形式
首先從緩存中獲取改改結(jié)點(diǎn)的值, 如果沒有,在從配置文件中讀取,
/**
* 獲取結(jié)點(diǎn)的值
* <i>8</i>
* @param name 葉子結(jié)點(diǎn)的值(name,是不包含root結(jié)點(diǎn), 使用"."拼接的, ie: abc.def.i)
* @return
*/
public synchronized String getProperty(String name) {
//先從緩存中獲取
String value = cacheMap.get(name);
if (value != null) {
return value;
}
Element element = getElementByName(name);
if (element == null) {
return null;
}
//獲取value
value = element.getText();
//緩存
cacheMap.put(name, value);
return value;
}
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Spring計(jì)時(shí)器StopWatch使用示例
這篇文章主要介紹了Spring計(jì)時(shí)器StopWatch使用示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
解決spring項(xiàng)目找不到Aspect依賴注解的問題
這篇文章主要介紹了解決spring項(xiàng)目找不到Aspect依賴注解的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
詳解為什么阿里巴巴禁止使用BigDecimal的equals方法做等值比較
這篇文章主要介紹了詳解為什么阿里巴巴禁止使用BigDecimal的equals方法做等值比較,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Java使用JDK與Cglib動(dòng)態(tài)代理技術(shù)統(tǒng)一管理日志記錄
這篇文章主要介紹了Java使用JDK與Cglib動(dòng)態(tài)代理技術(shù)統(tǒng)一管理日志記錄,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
IntelliJ IDEA JRebel 安裝使用圖文教程(熱部署插件)
IDEA 全稱 IntelliJ IDEA,是java語言開發(fā)的集成環(huán)境,IntelliJ在業(yè)界被公認(rèn)為最好的java開發(fā)工具之一。這篇文章主要介紹了IntelliJ IDEA 熱部署插件JRebel 安裝使用圖文教程,需要的朋友可以參考下2018-03-03
SpringBoot實(shí)現(xiàn)圖片識(shí)別文字的四種方式小結(jié)
本文主要介紹了SpringBoot實(shí)現(xiàn)圖片識(shí)別文字的四種方式,包括Tess4J,百度智能云,阿里云,騰訊云這四種,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02
Java簡(jiǎn)單計(jì)算器的實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了Java簡(jiǎn)單計(jì)算器的實(shí)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12
Java番外雜談之每天掃的二維碼你了解它內(nèi)含的信息嗎
二維碼已經(jīng)成為我們?nèi)粘I钪斜夭豢缮俚慕M成部分了,登錄需要掃一掃二維碼、買東西付錢需要掃一掃二維碼、開會(huì)簽到也需要掃一掃二維碼,那么如此使用的二維碼技術(shù),背后的原理是怎樣的呢?本文將結(jié)合二維碼的發(fā)展歷程以及典型應(yīng)用場(chǎng)景,分析二維碼背后的技術(shù)原理2022-02-02

