Ⅰ 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對象的相互轉換有幾種方式