国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開發(fā) > Java > 正文

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

2024-07-14 08:41:39
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

讀取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è)參考,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JAVA教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 建水县| 桂东县| 黎川县| 横山县| 怀宁县| 岳普湖县| 南宫市| 上杭县| 通榆县| 金门县| 海南省| 新宁县| 恩平市| 高唐县| 三亚市| 惠安县| 东丰县| 河津市| 南丰县| 石楼县| 合川市| 翁牛特旗| 绍兴市| 达尔| 临城县| 东山县| 南川市| 仁布县| 河西区| 襄城县| 曲靖市| 宜城市| 夹江县| 黎平县| 翁源县| 景谷| 河东区| 原平市| 昔阳县| 普陀区| 如东县|