亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

String與XML互轉(zhuǎn)以及從XML取節(jié)點(diǎn)值并修改的方法

 更新時(shí)間:2018年07月18日 14:18:49   作者:浪丶蕩  
今天小編就為大家分享一篇String與XML互轉(zhuǎn)以及從XML取節(jié)點(diǎn)值并修改的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

讀取xml文件生成Document對(duì)象

Document轉(zhuǎn)換成String類型串

String串轉(zhuǎn)成xml

已知xml節(jié)點(diǎn)取節(jié)點(diǎn)值

已知xml節(jié)點(diǎn)修改節(jié)點(diǎn)值

一個(gè)xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<transaction>
 <body>
  <request>
   <tranTyp>批量業(yè)務(wù)現(xiàn)存</tranTyp>
   <acctNm>0085213560</acctNm>
   <acctNo>6225885517843413</acctNo>
   <avlBal>201958.65</avlBal>
   <acctTyp>0</acctTyp>
   <tranTime>20170801101030</tranTime>
   <currencyTyp>CNY</currencyTyp>
   <tranDesc></tranDesc>
   <bal>201958.65</bal>
   <tranAmt>100000.00</tranAmt>
  </request>
 </body>
 <header>
  <msg>
   <sndTm>101019</sndTm>
   <msgCd>WCS0000200</msgCd>
   <seqNb>632376531000009</seqNb>
   <sndMbrCd>5200</sndMbrCd>
   <rcvMbrCd>0000</rcvMbrCd>
   <sndDt>20170821</sndDt>
   <sndAppCd>CBS</sndAppCd>
   <rcvAppCd>WCS</rcvAppCd>
   <callTyp>SYN</callTyp>
  </msg>
  <ver>1.0</ver>
  <pnt>
   <sndTm>101216</sndTm>
   <sndMbrCd>0000</sndMbrCd>
   <rcvMbrCd>0000</rcvMbrCd>
   <sndDt>20170809</sndDt>
   <sndAppCd>ESB</sndAppCd>
   <rcvAppCd>WCS</rcvAppCd>
  </pnt>
 </header>
</transaction>

java實(shí)現(xiàn)實(shí)例:

package com.adtec.mq.client;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.InputStream;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
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 org.w3c.dom.Document;
import org.w3c.dom.Node;

public class Test {

 /**
  * 
  * @param document
  *   Document對(duì)象(讀xml生成的)
  * @return String字符串
  * @throws Throwable
  */
 public String xmlToString(Document document) throws Throwable {
  TransformerFactory ft = TransformerFactory.newInstance();
  Transformer ff = ft.newTransformer();
  ff.setOutputProperty("encoding", "GB2312");
  ByteArrayOutputStream bos = new ByteArrayOutputStream();
  ff.transform(new DOMSource(document), new StreamResult(bos));
  return bos.toString();
 }

 /**
  * 
  * @param xml形狀的str串
  * @return Document 對(duì)象
  */
 public Document StringTOXml(String str) {

  StringBuilder sXML = new StringBuilder();
  sXML.append(str);
  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  Document doc = null;
  try {
   InputStream is = new ByteArrayInputStream(sXML.toString().getBytes("utf-8"));
   doc = dbf.newDocumentBuilder().parse(is);
   is.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
  return doc;
 }

 /**
  * 
  * @param document
  * @return 某個(gè)節(jié)點(diǎn)的值 前提是需要知道xml格式,知道需要取的節(jié)點(diǎn)相對(duì)根節(jié)點(diǎn)所在位置
  */
 public String getNodeValue(Document document, String nodePaht) {
  XPathFactory xpfactory = XPathFactory.newInstance();
  XPath path = xpfactory.newXPath();
  String servInitrBrch = "";
  try {
   servInitrBrch = path.evaluate(nodePaht, document);
  } catch (XPathExpressionException e) {
   e.printStackTrace();
  }
  return servInitrBrch;
 }

 /**
  * 
  * @param document
  * @param nodePath
  *   需要修改的節(jié)點(diǎn)相對(duì)根節(jié)點(diǎn)所在位置
  * @param vodeValue
  *   替換的值
  */
 public void setNodeValue(Document document, String nodePath, String vodeValue) {
  XPathFactory xpfactory = XPathFactory.newInstance();
  XPath path = xpfactory.newXPath();
  Node node = null;
  ;
  try {
   node = (Node) path.evaluate(nodePath, document, XPathConstants.NODE);
  } catch (XPathExpressionException e) {
   e.printStackTrace();
  }
  node.setTextContent(vodeValue);
 }

 public static void main(String[] args) throws Throwable {
  // 讀取xml文件,生成document對(duì)象
  DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
  // 文件的位置在工作空間的根目錄(位置隨意,只要寫對(duì)就ok)
  Document document = builder.parse(new File("a.xml"));

  Test t = new Test();
  // XML————》String
  String str = t.xmlToString(document);
  System.out.println("str:" + str);
  // String ————》XML
  Document doc = t.StringTOXml(str);
  String nodePath = "/transaction/header/msg/sndMbrCd";
  // getNodeValue
  String nodeValue = t.getNodeValue(doc, nodePath);
  System.out.println("修改前nodeValue:" + nodeValue);
  // setNodeValue
  t.setNodeValue(doc, nodePath, nodeValue + "hello");
  System.out.println("修改后nodeValue:" + t.getNodeValue(doc, nodePath));
 }

}

測(cè)試結(jié)果:

str:<?xml version="1.0" encoding="UTF-8" standalone="no"?><transaction>
 <body>
  <request>
   <tranTyp>批量業(yè)務(wù)現(xiàn)存</tranTyp>
   <acctNm>0085213560</acctNm>
   <acctNo>6225885517843413</acctNo>
   <avlBal>201958.65</avlBal>
   <acctTyp>0</acctTyp>
   <tranTime>20170801101030</tranTime>
   <currencyTyp>CNY</currencyTyp>
   <tranDesc/>
   <bal>201958.65</bal>
   <tranAmt>100000.00</tranAmt>
  </request>
 </body>
 <header>
  <msg>
   <sndTm>101019</sndTm>
   <msgCd>WCS0000200</msgCd>
   <seqNb>632376531000009</seqNb>
   <sndMbrCd>5200</sndMbrCd>
   <rcvMbrCd>0000</rcvMbrCd>
   <sndDt>20170821</sndDt>
   <sndAppCd>CBS</sndAppCd>
   <rcvAppCd>WCS</rcvAppCd>
   <callTyp>SYN</callTyp>
  </msg>
  <ver>1.0</ver>
  <pnt>
   <sndTm>101216</sndTm>
   <sndMbrCd>0000</sndMbrCd>
   <rcvMbrCd>0000</rcvMbrCd>
   <sndDt>20170809</sndDt>
   <sndAppCd>ESB</sndAppCd>
   <rcvAppCd>WCS</rcvAppCd>
  </pnt>
 </header>
</transaction>
修改前nodeValue:5200
修改后nodeValue:5200hello

以上這篇String與XML互轉(zhuǎn)以及從XML取節(jié)點(diǎn)值并修改的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java圓柱體表面積和體積計(jì)算代碼實(shí)例

    Java圓柱體表面積和體積計(jì)算代碼實(shí)例

    這篇文章主要介紹了Java圓柱體表面積和體積計(jì)算代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Java數(shù)據(jù)結(jié)構(gòu)之順序表和鏈表精解

    Java數(shù)據(jù)結(jié)構(gòu)之順序表和鏈表精解

    我在學(xué)習(xí)完順序表后一直對(duì)順序表和鏈表的概念存在一些疑問,這里給出一些分析和看法,通讀本篇對(duì)大家的學(xué)習(xí)或工作具有一定的價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Servlet實(shí)現(xiàn)代理文件下載功能

    Servlet實(shí)現(xiàn)代理文件下載功能

    這篇文章主要為大家詳細(xì)介紹了Servlet實(shí)現(xiàn)代理文件下載功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • idea創(chuàng)建maven父子工程導(dǎo)致子工程無法導(dǎo)入父工程依賴

    idea創(chuàng)建maven父子工程導(dǎo)致子工程無法導(dǎo)入父工程依賴

    創(chuàng)建maven父子工程時(shí)遇到一個(gè)問題,本文主要介紹了idea創(chuàng)建maven父子工程導(dǎo)致子工程無法導(dǎo)入父工程依賴,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • SpringBoot?基于?MongoTemplate?的工具類過程詳解

    SpringBoot?基于?MongoTemplate?的工具類過程詳解

    MongoDB是一個(gè)高性能,開源,無模式的文檔型數(shù)據(jù)庫,是當(dāng)前NoSql數(shù)據(jù)庫中比較熱門的一種,這篇文章主要介紹了SpringBoot基于MongoTemplate的工具類,需要的朋友可以參考下
    2023-09-09
  • 如何在SpringBoot項(xiàng)目中使用Oracle11g數(shù)據(jù)庫

    如何在SpringBoot項(xiàng)目中使用Oracle11g數(shù)據(jù)庫

    這篇文章主要介紹了在SpringBoot項(xiàng)目中使用Oracle11g數(shù)據(jù)庫的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 使用JavaConfig代替xml實(shí)現(xiàn)Spring配置操作

    使用JavaConfig代替xml實(shí)現(xiàn)Spring配置操作

    這篇文章主要介紹了使用JavaConfig代替xml實(shí)現(xiàn)Spring配置操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • SpringCloud大文件分片斷點(diǎn)上傳實(shí)現(xiàn)原理

    SpringCloud大文件分片斷點(diǎn)上傳實(shí)現(xiàn)原理

    這篇文章主要介紹了SpringCloud大文件分片斷點(diǎn)上傳實(shí)現(xiàn)原理,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Java String index out of range:100錯(cuò)誤解決方案詳解

    Java String index out of range:100錯(cuò)誤解決方案詳解

    這篇文章主要介紹了Java String index out of range:100錯(cuò)誤解決方案詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Java中的Kotlin?內(nèi)部類原理

    Java中的Kotlin?內(nèi)部類原理

    這篇文章主要介紹了Java中的Kotlin?內(nèi)部類原理,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-06-06

最新評(píng)論