Ⅰ 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对象的相互转换有几种方式