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

Java?根據(jù)XPATH批量替換XML節(jié)點(diǎn)中的值

 更新時(shí)間:2022年09月27日 08:32:41   作者:授客  
這篇文章主要介紹了Java根據(jù)XPATH批量替換XML節(jié)點(diǎn)中的值,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下

測試環(huán)境:

JDK 1.8.0_25

代碼實(shí)操:

message.xml文件

<Request service="SALE_ORDER_SERVICE" lang="zh-CN">
    <Head>
        <AccessCode>xxxxxxxxxx12Ur8v6qkYAaOf</AccessCode>
        <Checkword>xxxxxxxxxxkmPif7Z35UEJjrR</Checkword>
    </Head>
    <Body>
        <SaleOrderRequest>
            <CompanyCode>Wxxxxxxxxxx</CompanyCode>
            <SaleOrders>
                <SaleOrder>
                    <WarehouseCode>xxxxxxx</WarehouseCode>
                    <ErpOrder>SO20220519xxxx13190</ErpOrder>
                    <ErpOrderType>3</ErpOrderType>
                    <orderType>10</orderType>
                    <receiverAddress>未知地址</receiverAddress>
                    <OrderReceiverInfo>
                        <ReceiverCompany>個(gè)人</ReceiverCompany>
                        <ReceiverName>凱琳</ReceiverName>
                        <ReceiverCountry>中國</ReceiverCountry>
                        <ReceiverProvince>廣東省</ReceiverProvince>
                        <ReceiverCity>江門市</ReceiverCity>
                        <ReceiverArea>蓬江區(qū)</ReceiverArea>
                        <ReceiverAddress>詳細(xì)地址</ReceiverAddress>
                    </OrderReceiverInfo>
                    <OrderItems>
                        <OrderItem>
                            <SkuNo>1001178</SkuNo>
                            <ItemName>保婦康栓1.74g*14粒/盒</ItemName>
                            <ItemQuantity>1</ItemQuantity>
                        </OrderItem>
                        <OrderItem>
                            <SkuNo>1008766</SkuNo>
                            <ItemName>美團(tuán)小藥箱</ItemName>
                            <ItemQuantity>1</ItemQuantity>
                        </OrderItem>
                    </OrderItems>
                </SaleOrder>
            </SaleOrders>
        </SaleOrderRequest>
    </Body>
</Request>

XMLHelper.java

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;

public class XMLHelper {
	// XML文件轉(zhuǎn)XML文檔對(duì)象
    public static Document xmlFileToDocument(String filePath) throws Exception {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        dbf.setValidating(false);
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.parse(new FileInputStream(new File(filePath)));
        return doc;
    }

	// XML文檔轉(zhuǎn)XML字符串
    public static String docToString(Document doc) throws TransformerException {
        TransformerFactory ft = TransformerFactory.newInstance();
        Transformer ff = ft.newTransformer();
        ff.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
        ff.setOutputProperty("encoding", "gbk");
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        ff.transform(new DOMSource(doc), new StreamResult(bos));
        return bos.toString();
    }
    
	// XML字符串轉(zhuǎn)XML文檔對(duì)象
    public static Document stringToDocument(String xmlData) throws Exception {
        StringReader sr = new StringReader(xmlData);
        InputSource is = new InputSource(sr);
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.parse(is);
        return doc;
    }
	// 替換單個(gè)XPATH指定的XML節(jié)點(diǎn)值
    public static void replaceXmlNodeValue(Document doc, String nodePath, String value) throws XPathExpressionException {
        XPathFactory factory = XPathFactory.newInstance();
        XPath xpath = factory.newXPath();
        // 匹配需替換的節(jié)點(diǎn)
        NodeList nodeList = (NodeList) xpath.evaluate(nodePath, doc, XPathConstants.NODESET);
		
        // 單個(gè)XPATH可能匹配多個(gè)XML節(jié)點(diǎn),所以需要遍歷替換
        for (int i = 0; i < nodeList.getLength(); i++) {
            nodeList.item(i).setTextContent(value);
        }
    }
	// 批量多個(gè)XPATH指定的XML節(jié)點(diǎn)值
    public static void replaceXmlNodesValue(Document doc, List<String> nodesPath, String value) throws XPathExpressionException {
        for (String nodePath : nodesPath) {
            XMLHelper.replaceXmlNodeValue(doc, nodePath, value);
        }
    }
	
	
    public static void replaceReceiverAddress(Document doc, String value) throws Exception{
        List nodesPath= new ArrayList();
        nodesPath.add(".//OrderReceiverInfo/ReceiverAddress");
        nodesPath.add(".//receiverAddress");

        XMLHelper.replaceXmlNodesValue(doc, nodesPath, value);
    }
	
	public static void main(String []args) {        
        try {
            Document doc = XMLHelper.xmlFileToDocument("message.xml");

            // 替換地址
            XMLHelper.replaceReceiverAddress(doc, "吉祥街道幸福社區(qū)1號(hào)大樓23號(hào)");
     
            String newXml = XMLHelper.docToString(doc);
            System.out.println(newXml);
        } catch (Exception e) {
            e.printStackTrace();
        }
       
    }
}

到此這篇關(guān)于Java 根據(jù)XPATH批量替換XML節(jié)點(diǎn)中的值的文章就介紹到這了,更多相關(guān)Java替換XML節(jié)點(diǎn)值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用maven實(shí)現(xiàn)redis與idea的連接問題

    使用maven實(shí)現(xiàn)redis與idea的連接問題

    這篇文章主要介紹了使用maven實(shí)現(xiàn)redis與idea的連接問題,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07
  • 在Java8與Java7中HashMap源碼實(shí)現(xiàn)的對(duì)比

    在Java8與Java7中HashMap源碼實(shí)現(xiàn)的對(duì)比

    這篇文章主要介紹了在Java8與Java7中HashMap源碼實(shí)現(xiàn)的對(duì)比,內(nèi)容包括HashMap 的原理簡單介紹、結(jié)合源碼在Java7中是如何解決hash沖突的以及優(yōu)缺點(diǎn),結(jié)合源碼以及在Java8中如何解決hash沖突,balance tree相關(guān)源碼介紹,需要的朋友可以參考借鑒。
    2017-01-01
  • Java實(shí)現(xiàn)作業(yè)調(diào)度的示例代碼

    Java實(shí)現(xiàn)作業(yè)調(diào)度的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用Java實(shí)現(xiàn)SJF算法調(diào)度,要求測試數(shù)據(jù)可以隨即輸入或從文件中讀入,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2023-04-04
  • SpringBoot集成Spring Security的方法

    SpringBoot集成Spring Security的方法

    Spring security,是一個(gè)強(qiáng)大的和高度可定制的身份驗(yàn)證和訪問控制框架。這篇文章主要介紹了SpringBoot集成Spring Security的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • selenium + ChromeDriver安裝及使用方法

    selenium + ChromeDriver安裝及使用方法

    這篇文章主要介紹了selenium + ChromeDriver安裝及使用方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-06-06
  • TransmittableThreadLocal線程間傳遞邏輯示例解析

    TransmittableThreadLocal線程間傳遞邏輯示例解析

    這篇文章主要介紹了TransmittableThreadLocal線程間傳遞邏輯示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Java中Quartz高可用定時(shí)任務(wù)快速入門

    Java中Quartz高可用定時(shí)任務(wù)快速入門

    如果你想做定時(shí)任務(wù),有高可用方面的需求,或者僅僅想入門快,上手簡單,那么選用它準(zhǔn)沒錯(cuò),感興趣的小伙伴們可以參考一下
    2022-04-04
  • Java實(shí)現(xiàn)銀行賬戶管理子系統(tǒng)

    Java實(shí)現(xiàn)銀行賬戶管理子系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)銀行賬戶管理子系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Java RPC框架如何實(shí)現(xiàn)客戶端限流配置

    Java RPC框架如何實(shí)現(xiàn)客戶端限流配置

    這篇文章主要介紹了Java RPC框架如何實(shí)現(xiàn)客戶端限流配置,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • java編程進(jìn)行動(dòng)態(tài)編譯加載代碼分享

    java編程進(jìn)行動(dòng)態(tài)編譯加載代碼分享

    這篇文章主要介紹了java編程進(jìn)行動(dòng)態(tài)編譯加載代碼分享,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12

最新評(píng)論

平度市| 承德市| 通州区| 措美县| 建湖县| 石屏县| 克什克腾旗| 东至县| 济源市| 上饶县| 安溪县| 星座| 福贡县| 巴塘县| 垫江县| 大余县| 江北区| 米泉市| 石首市| 盐津县| 泽州县| 金平| 夏津县| 衡山县| 改则县| 子洲县| 南郑县| 崇礼县| 德庆县| 田阳县| 宁乡县| 汤阴县| 大荔县| 贵港市| 济阳县| 姚安县| 攀枝花市| 阳谷县| 安顺市| 山丹县| 临安市|