搜档网
当前位置:搜档网 › JavaBean与XML之间的互转

JavaBean与XML之间的互转

JavaBean与XML之间的互转
JavaBean与XML之间的互转

Myeclipse+jdk1.5以上版本自带JAXB工具(xml和javaBean的转化)

JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema 产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。

JAXBContext提供了一个入口,通过这个入口可以管理必要的XML/Java绑定信息。客户端应用程序通过newInstance(contextPath)方法得到该类的新实例。contextPath 参数包含一个或多个Java包名,这些Java包就是了JAXB编译器所产生的接口代码所在的Java包。该参数值初始化JAXBContext 对象,使得它能够管理JAXB编译器产生的接口;对于Marshaller和Unmarshaller,这两个对象主要是用于Java对象和XML文档互相转换的主要接口(Marshaller 负责从Java对象到XML文档的转换,Unmarshaller负责从XML文档到Java对象的转换)。Unmarshaller.unmarshal() 的方法可以直接将一个XML文件里的数据转换成Java对象。

实例:

import java.io.File;

import javax.xml.bind.JAXBContext;

import javax.xml.bind.Marshaller;

import javax.xml.bind.Unmarshaller;

import com.pobasoft.ws.Bean.CheckUserRsBean;

import com.pobasoft.ws.Bean.SelectUserIDListBean;

import com.pobasoft.ws.Bean.SelectUserIDListRsBean;

import com.pobasoft.ws.Interface.ExportEntityIDListInfo;

import com.pobasoft.ws.InterfaceImpl.ExportEntityListInfo;

public class Test {

//*************XML-->JavaBean***********************

public static Object xmltojava(Class cls,File file) throws Exception{

JAXBContext ctx=JAXBContext.newInstance(cls);

//JAXBContext可以创建Unmarshallers(将XML解析为Java对象)

Unmarshaller us=ctx.createUnmarshaller();

return us.unmarshal(file);

}

//*************JavaBean XML***********************

public static void javatoxml(Object obj,File file) throws Exception{

JAXBContext ctx=JAXBContext.newInstance(obj.getClass());

//JAXBContext可以创建Marshallers(将Java对象转换成XML)

Marshaller mar=ctx.createMarshaller();

mar.marshal(obj,file);

}

//测试(CheckUserRsBean是已经创建好的Bean对象)

在文件保存的操作代码中,也有对JAXB的操作:

private void saveAsFile() {

......

m.marshal(myContainer, new FileOutputStream(filename));

......

}

public static void main(String[] args) throws Exception {

CheckUserRsBean crb=new CheckUserRsBean();

crb.setKey("abc");

javatoxml(crb, new File("C:\\a.xml"));

--------------------------------------

File f=new File("C:\\a.xml");

CheckUserRsBean crb= (CheckUserRsBean) xmltojava(CheckUserRsBean.class, f);

System.out.println(crb.getKey());

}

链接:https://www.sodocs.net/doc/c214918147.html,/xcl119xcl/blog/item/eda41dc451d563ce39db49bb.html

import java.beans.IntrospectionException;

import java.io.IOException;

import java.io.StringReader;

import java.io.StringWriter;

import https://www.sodocs.net/doc/c214918147.html,mons.betwixt.io.BeanReader;

import https://www.sodocs.net/doc/c214918147.html,mons.betwixt.io.BeanWriter;

import org.xml.sax.SAXException;

import com.pobasoft.ws.Bean.SelectUserIDListBean;

public class XMLAndBeanUtil {

/**

* 将xml字符串转化为对象

*

* @param xmlString

* xml字符串

* @param className

* 类得全称(包名+类名)字符串

@param cl

* 对象的class名称

* @return 转化成的对象

*/

public Object xmlString2Object(String xmlString ,String className,Class cl) { // 创建一个读取xml文件的流

StringReader xmlReader = new StringReader(xmlString);

// 创建一个BeanReader实例,相当于转化器

BeanReader beanReader = new BeanReader();

//配置BeanReader实例

beanReader.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false);

beanReader.getBindingConfiguration().setMapIDs(false); //不自动生成ID

//注册要转换对象的类,并指定根节点名称

try {

//beanReader.registerBeanClass("SelectUserIDListBean", SelectUserIDListBean.class);

beanReader.registerBeanClass(className,cl);

} catch (IntrospectionException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

// 将XML解析Java Object

Object obj = null;

try {

obj = beanReader.parse(xmlReader);

} catch (IOException e) {

e.printStackTrace();

} catch (SAXException e) {

e.printStackTrace();

}

return obj;

}

/**

* 将对象转换为xml字符串

*/

public String Object2XmlString(Object object) {

String xmlString = null;

// 创建一个输出流,将用来输出Java转换的XML文件

StringWriter outputWriter = new StringWriter();

// 输出XML的文件头

outputWriter.write("\n");

// 创建一个BeanWriter实例,并将BeanWriter的输出重定向到指定的输出流BeanWriter beanWriter = new BeanWriter(outputWriter);

// 配置BeanWriter对象

beanWriter.getXMLIntrospector().getConfiguration()

.setAttributesForPrimitives(false);

beanWriter.getBindingConfiguration().setMapIDs(false);

beanWriter.setWriteEmptyElements(false);

try {

beanWriter.write(object);

} catch (Exception e) {

e.printStackTrace();

}

xmlString = outputWriter.toString();

// 关闭输出流

try {

outputWriter.close();

} catch (IOException e) {

e.printStackTrace();

}

return xmlString;

}

}

相关主题