欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

如果想獲取參數(shù)為name的所有節(jié)點的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é)點地址獲取指定節(jié)點內(nèi)容

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

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é)點內(nèi)容
     * @param xml xml內(nèi)容
     * @param attrName 節(jié)點名稱(例如: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對象
        Document document = DocumentHelper.parseText(xml);
        // 獲取根結點對象
        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;
    }
}

測試代碼

    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);
    }

測試結果輸出

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

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

總結

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

相關文章

  • java基于UDP實現(xiàn)在線聊天功能

    java基于UDP實現(xiàn)在線聊天功能

    這篇文章主要為大家詳細介紹了java基于UDP實現(xiàn)在線聊天功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • 淺談spring和spring MVC的區(qū)別與關系

    淺談spring和spring MVC的區(qū)別與關系

    下面小編就為大家?guī)硪黄獪\談spring和spring MVC的區(qū)別與關系。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • java中Iterator和ListIterator實例詳解

    java中Iterator和ListIterator實例詳解

    這篇文章主要介紹了java中Iterator和ListIterator實例詳解,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • 詳解使用spring boot admin監(jiān)控spring cloud應用程序

    詳解使用spring boot admin監(jiān)控spring cloud應用程序

    本篇文章主要介紹了詳解使用spring boot admin監(jiān)控spring cloud應用程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • java實現(xiàn)ATM機系統(tǒng)(2.0版)

    java實現(xiàn)ATM機系統(tǒng)(2.0版)

    這篇文章主要為大家詳細介紹了java實現(xiàn)ATM機系統(tǒng)2.0版,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • spring入門教程之bean的繼承與自動裝配詳解

    spring入門教程之bean的繼承與自動裝配詳解

    眾所周知Spring里面的bean就類似是定義的一個組件,而這個組件的作用就是實現(xiàn)某個功能的,下面這篇文章主要給大家介紹了關于spring入門教程之bean繼承與自動裝配的相關資料,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。
    2017-11-11
  • java實現(xiàn)頁面多查詢條件必選的統(tǒng)一處理思路

    java實現(xiàn)頁面多查詢條件必選的統(tǒng)一處理思路

    這篇文章主要為大家介紹了java實現(xiàn)頁面多查詢條件必選的統(tǒng)一處理思路詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • SpringBoot靜態(tài)方法調(diào)用Spring容器bean的三種解決方案

    SpringBoot靜態(tài)方法調(diào)用Spring容器bean的三種解決方案

    在SpringBoot中靜態(tài)方法調(diào)用Spring容器bean時出現(xiàn)的null值問題,本文就來介紹一下SpringBoot靜態(tài)方法調(diào)用Spring容器bean的三種解決方案,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2025-01-01
  • Java List集合排序?qū)崿F(xiàn)方法解析

    Java List集合排序?qū)崿F(xiàn)方法解析

    這篇文章主要介紹了Java List集合排序?qū)崿F(xiàn)方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • 模擬Spring的簡單實現(xiàn)

    模擬Spring的簡單實現(xiàn)

    本文的主要內(nèi)容就是學習Spring的開端,模擬一下Spring的實現(xiàn),感興趣的小伙伴可以參考一下
    2015-10-10

最新評論