最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java中獲取xml文件的某個(gè)配置節(jié)點(diǎn)內(nèi)容方式

 更新時(shí)間:2023年06月17日 10:19:04   作者:我不想成禿頭  
這篇文章主要介紹了java中獲取xml文件的某個(gè)配置節(jié)點(diǎn)內(nèi)容方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

java獲取xml文件的某個(gè)配置節(jié)點(diǎn)內(nèi)容

如果想要直接獲取webconfig.xml里面某個(gè)配置文件的節(jié)點(diǎn)的內(nèi)容,如何優(yōu)雅的實(shí)現(xiàn)?

例如有個(gè)xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<webapp-configs>
?? ?<param name="IP" value="127.0.0.1"/>
?? ?<param name="PORT" value="8070"/>
</webapp-configs>

如何獲取PORT的value是多少呢?

下面是代碼:

public class WebappConfigUtil {
?? ?private final static String CONFIG_FILE_NAME = "/webapp-config.xml";
?? ?private Document configDocument;
?? ?private static WebappConfigUtil instance = new WebappConfigUtil();//得到配置文件的document對(duì)象
?? ?private WebappConfigUtil() {
?? ??? ?SAXReader reader = new SAXReader();//創(chuàng)建一個(gè)讀取xml文件的對(duì)象
?? ??? ?try {
?? ??? ??? ?configDocument = reader.read(WebappConfigUtil.class
?? ??? ??? ??? ??? ?.getResourceAsStream(CONFIG_FILE_NAME));//括號(hào)內(nèi):查找具有給定名稱的資源 括號(hào)外:得到document對(duì)象
?? ??? ?} catch (DocumentException exp) {
?? ??? ??? ?configDocument = DocumentHelper.createDocument();
?? ??? ??? ?configDocument.addElement("webapp-configs");
?? ??? ?}
?? ?}
?? ?public static String getParameter(String name) {
?? ??? ?//讀取wabapp-config.xml的字符串(大標(biāo)簽套小標(biāo)簽)
?? ??? ?String xpath = "/webapp-configs/param[@name='" + name + "']/@value";
?? ??? ?Node node = instance.configDocument.selectSingleNode(xpath);//找到節(jié)點(diǎn)
?? ??? ?if (node == null) {
?? ??? ??? ?return "";
?? ??? ?}
?? ??? ?return node.getText();
?? ?}
?? ?public static void main(String[] args){
?? ??? ?System.out.println(WebappConfigUtil.getParameter("PORT"));
?? ?}
}

如果想獲取參數(shù)為name的所有節(jié)點(diǎn)的list,那么

?? ?public static List<String> getParameterList(String name) {
?? ??? ?String xpath = "/webapp-configs/param[@name='" + name + "']/list/value";
?? ??? ?List<?> nodes = instance.configDocument.selectNodes(xpath);
?? ??? ?List<String> values = new ArrayList<String>();
?? ??? ?for (Iterator<?> iter = nodes.iterator(); iter.hasNext();) {
?? ??? ??? ?Node node = (Node) iter.next();
?? ??? ??? ?values.add(node.getText());
?? ??? ?}
?? ??? ?return values;
?? ?}

java根據(jù)xml節(jié)點(diǎn)地址獲取指定節(jié)點(diǎn)內(nèi)容

備好幾個(gè)前同事問過怎么獲取xml指定節(jié)點(diǎn)內(nèi)容后,終于決定寫個(gè)工具類

maven依賴包 

        <dependency>
			<groupId>dom4j</groupId>
			<artifactId>dom4j</artifactId>
			<version>1.6.1</version>
		</dependency>

XmlUtil

import java.util.*;
import java.util.stream.Collectors;
import org.dom4j.*;
public class XmlUtil {
    /**
     * 獲取XML指定節(jié)點(diǎn)內(nèi)容
     * @param xml xml內(nèi)容
     * @param attrName 節(jié)點(diǎn)名稱(例如:TranData.OutputData.Result)
     * @return
     * @throws Exception
     */
    public static String getXmlAttrValue(String xml,String attrName) throws Exception {
        if (null==xml||xml.equals("")||null==attrName||attrName.equals("")){
            return null;
        }
        String[] attrs = attrName.split("\\.");
        int length = attrs.length;
        String result = null;
        // 將xml格式字符串轉(zhuǎn)化為DOM對(duì)象
        Document document = DocumentHelper.parseText(xml);
        // 獲取根結(jié)點(diǎn)對(duì)象
        Element element = document.getRootElement();
        List<Element> elements = Arrays.asList(element);
        for (int i = 0; i < length; i++) {
            Map<String,Element> elementMap = elements.stream().collect(Collectors.toMap(e->e.getName(),e->e));
            if (elementMap.containsKey(attrs[i])){
                if (i==length-1){
                    result = elementMap.get(attrs[i]).asXML();
                    break;
                }else {
                    elements = elementMap.get(attrs[i]).elements();
                }
            }else {
                throw new Exception("Node does not exist:"+attrName);
            }
        }
        return result;
    }
}

測(cè)試代碼

    public static void main(String[] args) throws Exception {
        String xml = "<?xml version=\"1.0\" encoding=\"GBK\"?>\n" +
                "<TranData>\n" +
                "    <ClientInfo>\n" +
                "        <resultCode>0</resultCode>\n" +
                "        <resultMsg>查詢成功</resultMsg>\n" +
                "        <transDate>2023-08-30</transDate>\n" +
                "    </ClientInfo>\n" +
                "    <InputData>\n" +
                "        <PolicyNum>321052800581541</PolicyNum>\n" +
                "    </InputData>\n" +
                "    <OutputData>\n" +
                "        <Result>\n" +
                "            <SubPolBackFee>111.52</SubPolBackFee>\n" +
                "            <InceptContValue>0</InceptContValue>\n" +
                "            <OtherDeduct>1430.48</OtherDeduct>\n" +
                "            <AccountChg>0</AccountChg>\n" +
                "            <CashValue>1542.00</CashValue>\n" +
                "            <BankCode>103</BankCode>\n" +
                "            <BankCodeName>中國農(nóng)業(yè)銀行</BankCodeName>\n" +
                "            <BankAccNo>6228480320236711910</BankAccNo>\n" +
                "            <AccName>快快快</AccName>\n" +
                "            <SumPrem>1542</SumPrem>\n" +
                "            <SumAmnt>100000</SumAmnt>\n" +
                "            <PayCount>1</PayCount>\n" +
                "            <LiveInsuaccMoney>0.0</LiveInsuaccMoney>\n" +
                "            <BonusInsuaccMoney>0.0</BonusInsuaccMoney>\n" +
                "            <LoanAmnt></LoanAmnt>\n" +
                "            <LoanInterest></LoanInterest>\n" +
                "        </Result>\n" +
                "    </OutputData>\n" +
                "</TranData>\n";
        String result = getXmlAttrValue(xml,"TranData.OutputData.Result.BankCodeName");
        System.out.println(result);
    }

測(cè)試結(jié)果輸出

另外,如果要獲取xml節(jié)點(diǎn)得值可以修改代碼,

Element.getText()、Element.getStringValue()都可以獲取xml節(jié)點(diǎn)值

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java實(shí)現(xiàn)復(fù)雜的進(jìn)制轉(zhuǎn)換器功能示例

    Java實(shí)現(xiàn)復(fù)雜的進(jìn)制轉(zhuǎn)換器功能示例

    這篇文章主要介紹了Java實(shí)現(xiàn)復(fù)雜的進(jìn)制轉(zhuǎn)換器功能,結(jié)合實(shí)例形式分析了java數(shù)學(xué)運(yùn)算的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-01-01
  • Spring中基于XML的面向切面編程(AOP)詳解

    Spring中基于XML的面向切面編程(AOP)詳解

    這篇文章主要詳細(xì)介紹了Spring中基于XML的面向切面編程(AOP),文中通過代碼示例給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-04-04
  • idea編寫java程序詳細(xì)圖文步驟

    idea編寫java程序詳細(xì)圖文步驟

    這篇文章主要給大家介紹了關(guān)于idea編寫java程序的詳細(xì)圖文步驟,IDEA是用于Java語言開發(fā)的集成環(huán)境,它是業(yè)界公認(rèn)的目前用于Java程序開發(fā)最好的工具,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • Java 中Flyway的使用詳解

    Java 中Flyway的使用詳解

    這篇文章主要介紹了Java 中Flyway的使用詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 詳解Maven項(xiàng)目缺少M(fèi)aven Dependencies解決方法總結(jié)

    詳解Maven項(xiàng)目缺少M(fèi)aven Dependencies解決方法總結(jié)

    這篇文章主要介紹了詳解Maven項(xiàng)目缺少M(fèi)aven Dependencies解決方法總結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 使用IDEA創(chuàng)建Servlet程序的詳細(xì)步驟

    使用IDEA創(chuàng)建Servlet程序的詳細(xì)步驟

    在學(xué)習(xí)servlet過程中,參考的教程是用eclipse完成的,而我在練習(xí)的過程中是使用IDEA的,在創(chuàng)建servlet程序時(shí)遇到了挺多困難,在此記錄一下如何用IDEA完整創(chuàng)建一個(gè)servlet程序,感興趣的朋友一起看看吧
    2024-08-08
  • 使用java的milo框架訪問OPCUA服務(wù)的過程

    使用java的milo框架訪問OPCUA服務(wù)的過程

    這篇文章主要介紹了使用java的milo框架訪問OPCUA服務(wù)的方法,本次采用KEPServerEX5模擬服務(wù)端,使用milo開發(fā)的程序作為客戶端,具體操作使用過程跟隨小編一起看看吧
    2022-01-01
  • Java CompletableFuture 異步超時(shí)實(shí)現(xiàn)深入研究

    Java CompletableFuture 異步超時(shí)實(shí)現(xiàn)深入研究

    這篇文章主要為大家介紹了Java CompletableFuture 異步超時(shí)實(shí)現(xiàn)深入研究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Java實(shí)現(xiàn)壓縮 PDF文件大小的示例代碼

    Java實(shí)現(xiàn)壓縮 PDF文件大小的示例代碼

    在日常工作中,我們經(jīng)常會(huì)遇到 PDF 文件體積過大的問題,本文將為你揭示如何利用 Spire.PDF for Java 輕松實(shí)現(xiàn) PDF 文件大小的優(yōu)化與壓縮,感興趣的可以了解下
    2025-09-09
  • mybatis-plus?分頁類型轉(zhuǎn)換工具類

    mybatis-plus?分頁類型轉(zhuǎn)換工具類

    用mybatis-plus?的分頁對(duì)象的時(shí)候,因?yàn)橛胢ybatis-puls?查詢出來的分頁對(duì)象的records里的泛型是實(shí)體,有時(shí)候需要將實(shí)體轉(zhuǎn)換為前端展示的對(duì)象,所有寫了一個(gè)分頁數(shù)據(jù)的類型轉(zhuǎn)換工具,解決這個(gè)問題,對(duì)mybatis-plus?分頁工具類相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-03-03

最新評(píng)論

司法| 乐昌市| 孝昌县| 和田市| 桂林市| 霍州市| 松原市| 洪洞县| 满城县| 永清县| 贵州省| 浮山县| 玉田县| 法库县| 明光市| 恩施市| 天台县| 厦门市| 安远县| 仙桃市| 新民市| 邵东县| 邢台县| 赤水市| 孟连| 伊川县| 阳曲县| 延川县| 贵定县| 上饶县| 昌乐县| 鄂托克前旗| 康保县| 邵阳县| 江永县| 宜兴市| 阜新| 四川省| 贵南县| 师宗县| 和田县|