JAXBContext實戰封裝Xml和解析Xml
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class JAXBUtil {
private static final Log logger = LogFactory.getLog(JAXBUtil.class);
private static Map<String,JAXBContext> map = new ConcurrentHashMap<String,JAXBContext>();
/**
*
* @param clazz xml繫結的物件的類
* @param object xml繫結的物件
* @return 解析後字元編碼為UTF-8的xml字串
* @throws Exception
*/
public static <T> String toXml(Class<T> clazz,Object object) throws Exception {
// 組裝xml
ByteArrayOutputStream os = new ByteArrayOutputStream();
Marshaller marshaller = null;
JAXBContext context = null;
String returnString = null;
try{
try {
context = map.get(clazz.toString());
if(context==null)
{
context = JAXBContext.newInstance(clazz);
map.put(clazz.toString(), context);
}
marshaller = context.createMarshaller();
//marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
//marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
marshaller.marshal(object, os);
} catch (Exception e) {
logger.error("組裝訊息報文錯誤:" + e.getMessage());
logger.error(e);
throw e;
}
//轉換為UTF-8的字串
if (os != null) {
returnString = os.toString(Constant.ENCODING_UTF8);
}
} finally{
marshaller = null;
if (os != null)
{
os.close();
}
os = null;
}
return returnString;
}
/**
*
* @param clazz xml繫結的物件的類
* @param xmlString 字元編碼為UTF-8的xml字串
* @return 返回xml繫結的物件
* @throws Exception
*/
public static <T> T toObject(Class<T> clazz,String xmlString) throws Exception
{
ByteArrayInputStream stream = new ByteArrayInputStream(xmlString.getBytes("UTF-8");
Unmarshaller unmarshaller = null;
JAXBContext context = null;
Object returnObject = null;
try {
context = map.get(clazz.toString());
if(context==null)
{
context = JAXBContext.newInstance(clazz);
map.put(clazz.toString(), context);
}
unmarshaller = context.createUnmarshaller();
returnObject = unmarshaller.unmarshal(stream);
} catch (Exception e) {
logger.error("解析訊息報文錯誤:" + e.getMessage());
logger.error(e);
throw e;
}
finally{
unmarshaller = null;
if(stream!=null)
{
stream.close();
}
stream = null;
}
return (T) returnObject;
}
public static void main(String[] args) throws Exception {
TestXml test = new TestXml();
test.setStrId("123");
相關推薦
JAXBContext實戰封裝Xml和解析Xml
package test.utils; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.util.Map; import java.util.concurrent.Concurrent
DOM,SAX,JDOM,DOM4J優缺點比較及生產xml和解析xml
下載必要的jar包: activation.jar commons-logging-1.0.4.jar dom4j-1.6.1.jar jaxen-1.1.1.jar jdom-1.0.jar 一、DOM 解析器讀入整個文件,然後構建一個駐留記憶體的樹結構,使用 DOM 介
java組裝xml和解析xml(jdom使用)
場景:將一張表一條記錄資料組裝成標準XML,將標準XML解析放入HashMap中 1.組裝XML /** 組裝XML */ public static String formatDataToXml(Map mapdData) { StringBuffer xml = ne
Python:minidom模塊(DOM寫入和解析XML)
ice 美化 odin xml文件 高級 獲取 node 錯誤信息 tel 一、DOM寫XML文件 #導入minidom from xml.dom import minidom # 1.創建DOM樹對象 dom=minidom.Document() # 2.創建根節點。每
java 生成和解析xml
img use public set odin 實現 etag system Coding 本文主要使用的是Jdom.jar包(包的下載百度一下)實現了生成xml文件和解析xml文件 下面是生成xml的實現 說明:stuLists集合是一個存放著Student對象的集合
post方式發送和解析xml
httpclient post xml public void etcauthorize(String authCode, String clientState) { logger.info("CMCasController- etcauthorize start... "); V
PHP如何接收和解析xml
$_POST是通過HTTP POST方法傳遞的變數組成的陣列。是自動全域性變數。 $GLOBALS['HTTP_RAW_POST_DATA'] :總是產生 $HTTP_RAW_POST_DATA 變數包含有原始的 POST 資料。此變數僅在碰到未識別 MIME 型別的資料時產
寫入和解析 XML 文件
待測試的 Java 物件 RootElement: import javax.xml.bind.annotation.XmlRootElement; /** * Unmarshaller的文件根元素 */ @XmlRootElement public clas
C++使用TinyXML生成和解析xml檔案
TinyXML is a simple, small, C++ XML parser that can be easily integrated into other programs. 官網下載原始碼 下載後把tinystr.h、tinystr.cpp、tinyxml.h、tinyxm
struts2中struts.xml和web.xml檔案解析及工作原理
web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmln
java Document生成和解析xml
Document 場景:需要知道文件所有結構 需要把文件一些元素排序 文件中的資訊被多次使用的情況 優勢:由於Document是java中自帶的解析器,相容性強 缺點:由於Document是一次性載入文件資訊,如果文件太大,不太
【電信計費系統專案實戰】基礎篇---解析XML檔案
寫在前面 這一篇介紹如何解析xml檔案,因專案中的角色管理有個許可權列表 為了方便管理,我們用privileges.xml儲存許可權操作資訊。 解析xml檔案 用privileges.xml儲存許可權操作資訊的程式碼如下: <?xml
JAVA DOM生成和解析XML例項
XML現在已經成為一種通用的資料交換格式,平臺的無關性使得很多場合都需要用到XML。java操作XML時候有4中經典方法,本文將介紹DOM操作XML。並給出一個用DOM生成和解析XML的例項。 初始步驟如下: 1.建立解析工廠: DocumentBuilderFac
Java之Pull方式生成xml檔案和解析xml檔案
Pull XML解析器早已經被google整合到android sdk當中,它是google官方推薦的解析器。 如果我們要在Java桌面、J2ME等當中使用Pull方式生成xml檔案和解析xml檔案,需要用到kxml2; KXML解析器是基於普通XML PULL解析器的
java 利用Xstream註解生成和解析xml
1.Xstream簡介; 使用限制: JDK版本不能<1.5. 雖然預處理註解是安全的,但自動偵查註解可能發生競爭條件. 特點: 簡化的API; 無對映檔案; 高效能,低記憶體佔用; 整潔的XML; 不需要修改物件;支援內部私
jdom解析xml和新增xml
使用jdom解析和新增xml package com.test.common.util; import java.io.FileOutputStream; import java.util.List; import org.jdom.Document; import
dom4j組裝xml 以及解析xml
next des pan count() entry col shu ron 一行 dom4j組裝xml 以及解析xml: 1.下載dom4j的jar包,地址:https://dom4j.github.io/ 2.java代碼: package test; import
SSM的XML和WEB.XML的配置
erl 視圖 核心 contex select 3.0 agg oct eth 顯示層(handler/controller): request請求到springmvc的前端控制器,從處理器映射器找相應的handler(用@RequestMapping(" ")標註,
利用反射與dom4j讀取javabean生成對應XML和讀取XML得到對應的javabean物件集合
首先實現生成對應的JAVAbean的XML檔案方法 /** * DMO4J寫入XML * @param obj 泛型物件 * @param entityPropertys 泛型物件的List集合 * @param Encode
Tomcat中的Web.xml和servlet.xml的學習
conf 元素 加載 位置 區別 目的 lte 全局配置 doc Web.xml文件使用總結 作用: 存儲項目相關的配置信息,保護servlet。解耦一些數據對程序的依賴 使用位置: 每個web項目中 Tomcat服務器中(在服務器目錄conf目錄中) 區別: We