導航:首頁 > 編程語言 > java對象轉換成xml

java對象轉換成xml

發布時間:2022-12-16 02:31:00

java中object和xml互相轉換

import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Object2XML {

public static String object2XML(Object obj, String outFileName)
throws FileNotFoundException {
// 構造輸出XML文件的位元組輸出流
File outFile = new File(outFileName);
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(outFile));
// 構造一個XML編碼器
XMLEncoder xmlEncoder = new XMLEncoder(bos);
// 使用XML編碼器寫對象
xmlEncoder.writeObject(obj);
// 關閉編碼器
xmlEncoder.close();

return outFile.getAbsolutePath();
}

public static Object xml2Object(String inFileName)
throws FileNotFoundException {
// 構造輸入的XML文件的位元組輸入流
BufferedInputStream bis = new BufferedInputStream(
new FileInputStream(inFileName));
// 構造一個XML解碼器
XMLDecoder xmlDecoder = new XMLDecoder(bis);
// 使用XML解碼器讀對象
Object obj = xmlDecoder.readObject();
// 關閉解碼器
xmlDecoder.close();

return obj;
}
public static void main(String[] args) throws IOException {
// 構造一個StudentBean對象
StudentBean student = new StudentBean();
student.setName("wamgwu");
student.setGender("male");
student.setAge(15);
student.setPhone("55556666");

// 將StudentBean對象寫到XML文件
String fileName = "AStudent.xml";
Object2XML.object2XML(student, fileName);
// 從XML文件讀StudentBean對象
StudentBean aStudent = (StudentBean)Object2XML.xml2Object(fileName);
// 輸出讀到的對象
System.out.println(aStudent.toString());
}
}

Ⅱ java對象與XML轉換問題

用XStream,網路上JAR包和教程一搜一大把,不復雜,使用起來也蠻簡單的,專門用來xml轉對象,對象轉XML的工具

Ⅲ 關於jaxb用jaxb如何實現java對象和xml的轉換

既然你不想定義result這個類,那你service中的屬性都可以不用定義了,直接使用XmlJavaTypeAdapter這樣大的註解去marshal、unmarshal對象xml就行了。一般使用jaxb,如果屬性為某個類庫中定義的類,而需要轉換為xml時,通過XmlJavaTypeAdapter來進行特殊處理。如插件開發中,元素屬性為:org.eclipse.draw2d.geometry.Rectangle(矩形)時,通過XmlJavaTypeAdapter轉換,如下所示: import javax.xml.bind.annotation.adapters.XmlAdapter; import org.eclipse.draw2d.geometry.Rectangle; public class LayoutXmlAdapter extends XmlAdapter<String, Rectangle{@Overridepublic String marshal(Rectangle v) throws Exception{if(v == null) return ""; return v.x + "," + v.y + "," + v.width + "," + v.height;}@Overridepublic Rectangle unmarshal(String v) throws Exception{if(v != null && v.trim().length() 0){String[] ps = v.split(","); if(ps.length ==4){int x = Integer.parseInt(ps[0]); int y = Integer.parseInt(ps[1]); int width = Integer.parseInt(ps[2]); int height = Integer.parseInt(ps[3]); return new Rectangle(x, y, width, height);}}return new Rectangle(0, 0, 0, 0);}}如果你非要不定義result類,直接轉換為: 那你可以使用XmlJavaTypeAdapter註解。

Ⅳ 求 Java序列化對象轉xml方法....


/**這里應用了JAVA的Marshall方法
*對象轉xml
*返回xml
*@paramtXLife
*@return
*/
publicstaticStringtXLiftToXML(com.TXLifetXLife){
Stringxml="";
try{
ByteArrayOutputStreamout=newByteArrayOutputStream();
JAXBContextjc=JAXBContext
.newInstance("com");//包的命名空間
Marshallerm=null;
synchronized(jc){
m=jc.createMarshaller();
}
m.setProperty(Marshaller.JAXB_ENCODING,"GBK");
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,Boolean.TRUE);

m.marshal(tXLife,out);

xml=out.toString();//賦值
}catch(Exceptione){
xml=null;
}
returnxml;
}

Ⅳ XStream將java對象轉換為xml時,對象欄位中的下劃線「_」,轉換後變成了兩個

warning: [deprecation] XppDriver(com.thoughtworks.xstream.io.xml.XmlFriendlyReplacer) in com.thoughtworks.xstream.io.xml.XppDriver has been deprecated

已經過時的方法,所以,不會調用此方法。

Ⅵ xstream如何將java對象轉化成有cdata的xml

實體類要加註解

實體類要加註解
@XStreamAlias("msg")
{

=3196422897798539811L;

@XStreamAsAttribute
privateStringtoUid;
@XStreamAsAttribute
privateStringfromUid;
@XStreamAsAttribute
privateStringflag;
@XStreamAsAttribute
privateStringtime;
@XStreamAlias("content")
privateStringcontent;
@XStreamAlias("user")
privateStringuser;
//省略geter、seter
}
然後寫個工具類
importcom.thoughtworks.xstream.XStream;
importcom.thoughtworks.xstream.io.xml.DomDriver;

publicclassSerializeXmlUtil{

/**
*java對象轉化成xml字元串
*@paramobjjava對象實例
*@returnStringxml字元串
*/
(Objectobj){
//XStreamxstream=newXStream();
//直接用jaxpdom來解釋
//XStreamxstream=newXStream(newDomDriver());
//指定編碼解析器,直接用jaxpdom來解釋
XStreamxstream=newXStream(newDomDriver("utf-8"));
//如果沒有這句,xml中的根元素會是<包.類名>
//或者說:註解根本就沒生效,所以的元素名就是類的屬性
xstream.processAnnotations(obj.getClass());
StringBufferxmlstrbuf=newStringBuffer();
xmlstrbuf.append("<?xmlversion="1.0"?>");
xmlstrbuf.append(" ");
xmlstrbuf.append(xstream.toXML(obj));
returnxmlstrbuf.toString();
}

/**
*將傳入xml字元串轉化為java對象
*@paramxmlstr
*@paramclsxml對應的class類
*@returnTxml對應的class類的實例對象
*調用的方法實例:PersonBeanperson=XmlUtil.toBean(xmlStr,PersonBean.class);
*/
publicstatic<T>TdeSerizalizeFromXml(Stringxmlstr,Class<T>cls)throwsException{
//注意:不是newXstream();否則報錯:java.lang.NoClassDefFoundError:
//org/xmlpull/v1/XmlPullParserFactory
XStreamxstream=newXStream(newDomDriver());
xstream.processAnnotations(cls);
Tobj=(T)xstream.fromXML(xmlstr);
returnobj;
}
}

Ⅶ 用XStream 轉換java對象成xml的一個疑問

Ⅷ java對象如何轉換成xml

rt.jar就可以操作xml了,其次是dom4j,別的都沒有什麼名氣

Ⅸ xtream的工具使用

Xstream

需要的jar包

xpp3_min-1.1.4c.jar

xstream-1.3.1.jar

作用:

將xml字元串轉換為java對象,或者將java對象轉換為xml字元串

核心類:XStream xs = new XStream();

准備工作,先創建兩個java類:City和Province

@XStreamAlias("city")

public class City {

private String name;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

@XStreamAlias("province")

public class Province {

@XStreamAsAttribute()

private String name;

@XStreamImplicit(itemFieldName = "city")

private List citys;

public List getCitys() {

return citys;

}

public void setCitys(List citys) {

this.citys = citys;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

第一:將java類轉換為xml字元串

XStream xs = new XStream();

String xml = xs.toXML(JavaBean);

列印的字元串會將類的包名作為xml的標簽,以及裡面的欄位都會變成標簽。

例如將City類變為xml字元串:

武漢

將Province變成xml字元串

湖北

武漢

所以為了能將列印的字元串變為我們所想要的格式,可以使用Xstream提供的註解進行格式化輸出

提供便捷註解

@XStreamAlias(別名) 對類和變數設置別名

@XStreamAsAttribute  設置變數生成屬性

@XStreamOmitField  設置變數 不生成到XML

@XStreamImplicit(itemFieldName = 「hobbies」) 設置集合類型變數 別名

使註解生效

xStream.autodetectAnnotations(true);

第二:將xml字元串變為java對象

Object xs.fromXML(InputStream input);  //將一個下買了指定的流變為java對象

Object xs.fromXML(String xml)  //將xml字元串變為java對象

Object xs.fromXML(InputStream input,Object root)  ?

Object xs.fromXML(String xml,Object root)  ?

注意:轉換的xml文檔必須與Java對象  的格式對應

例如:將下面xml字元串轉換為Java對象

武漢

則進行轉換時候:

XStream xs = new XStream();

Object o = xs.fromXML(in);

若對應的java格式一定是:

包名為:com.domain

類名為:City

裡面有一個成員屬性:name  提供setter/getter方法

若不是則可以使用別名:

a.為類設置別名

xs.alias("city", City.class);

b.為屬性添加別名

xstream.useAttributeFor(Blog.class,"author");

能不能通過註解將 xml轉換為制定的java對象  ?

能,手動用方法添加別名

   

Ⅹ xml與java對象的相互轉換有幾種方式

JAXB(Java Architecture for XML Binding) 是一個業界的標准,是一項可以根據XML Schema產生Java類的技術。該過程中,JAXB也提供了將XML實例文檔反向生成Java對象樹的方法,並能將Java對象樹的內容重新寫到XML實例文檔。從另一方面來講,JAXB提供了快速而簡便的方法將XML模式綁定到Java表示,從而使得Java開發者在Java應用程序中能方便地結合XML數據和處理函數。 JAXBContext 類提供到 JAXB API 的客戶端入口點。它提供了管理實現 JAXB 綁定框架操作所需的 XML/Java 綁定信息的抽象,這些操作包括:解組、編組和驗證。xml與java對象的相互轉換有幾種方式

閱讀全文

與java對象轉換成xml相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:758
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:672
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:486
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:383
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:350
風翼app為什麼進不去了 瀏覽:779
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:151
伊克塞爾文檔怎麼進行加密 瀏覽:893
app轉賬是什麼 瀏覽:163