`

XML和javaBean的转化

阅读更多

 

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());
  }

 

import java.beans.IntrospectionException;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
import org.apache.commons.betwixt.io.BeanReader; 
import org.apache.commons.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("<?xml version='1.0' ?>\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;
}
}

 

 

 

 

分享到:
评论

相关推荐

    JOX实现XML和JavaBean相互转化

    XML和JavaBean相互转化是一个非常有用的工作,用来读写xml的组件很多,比如dom4j, sax, JDom,Digester等,但是很多组件用起来很麻烦,今天给大家推荐一个超级简单的组件JOX, JOX是一套用户XML document和Java ...

    javabean和xml互相转换工具类以及jar包

    JavaBean和XML之间的转换在软件开发中扮演着重要的角色,特别是在数据交换和接口通信中。当我们需要在不同的系统之间传递信息时,XML由于其结构化和可读性,经常被用作数据传输的标准格式。然而,JavaBean是Java中...

    java根据xml生成schema_xsd_生成javabean

    1. XML到XSD的转换:XML文档可以被转化为XSD文件,以定义其结构和数据类型。这个过程通常通过工具完成,比如`trang.jar`,这是一个开源的RNG到其他Schema语言的转换工具。在本例中,可能使用了`trang.jar`将一个XML...

    java-xml相互转化

    本主题聚焦于Java与XML之间的相互转化,特别是如何利用XML文件自动生成JavaBean对象,以及Java对象到XML的序列化和反序列化过程。 首先,Java与XML的转化通常涉及两个主要步骤:解析XML文件生成Java对象和将Java...

    xstream-1.3.1.jar javabean与xml之间的转化

    - **简单易用:**XStream 提供了简洁的 API,使得在 Java 代码中进行 XML 和 Java 对象之间的转换变得非常容易。 - **自定义映射:**如果默认的自动映射不符合需求,可以使用注解或配置文件来自定义字段与 XML 元素...

    jox.jar包 是操作xml文件与javaBean的相互转化

    jox是一组java类库 实现javaBean与xml相互转化 更加容易

    JOX(解决了日期格式转化和导出XML中文乱码问题)

    核心:解决了日期格式转化和导出XML中文乱码问题 介绍:有时候,我们需要把javabean的内容保存到文件,或者通过网络传递。这时候,把javabean转化为xml是一个常用的方式。但java本身提供的操作xml的方式有些麻烦,而...

    xml和bean 互相转换

    1. **解析XML**:Java中使用DOM(文档对象模型)、SAX(简单API for XML)或StAX(流式API for XML)等解析器读取XML文件并将其转化为内存中的对象结构。DOM一次性加载整个XML文档,适合小文件;SAX事件驱动,逐行...

    xsd生成javaBean

    以下是一段简单的示例代码,展示如何使用Castor将XML数据转化为JavaBean: ```java import org.exolab.castor.xml.MarshalException; import org.exolab.castor.xml.Marshaller; import org.exolab.castor.xml....

    java持久化工具类:JavaBean与XML

    JavaBean和XML是Java中实现持久化的两种常见方式。这篇博客文章将探讨如何使用JavaBean和XML进行数据持久化,并提供相关的源码实例。 首先,JavaBean是一种符合特定规范的Java类,它通常用来封装数据,具有getter和...

    XStream在JavaBean与XML/JSON 之间相互转换

    这个强大的工具在处理数据交换、持久化或配置文件时非常有用,尤其是在需要将复杂对象结构转化为易于理解和操作的文本格式时。 **一、XStream的安装与基本使用** 要使用XStream,首先需要将其添加到项目的依赖管理...

    javabean2xml实例与jox-1.17b3.jar

    在Java开发中,我们经常需要将JavaBean对象的数据转化为XML格式,以便于数据交换、存储或网络传输。这个实例可能是为了演示如何使用JOX库中的BeanXMLMapping组件来实现这一过程。 首先,BeanXMLMapping组件是JOX库...

    在线书店(jsp+javabean)

    在线书店(jsp+javabean)是一个基于Web的图书销售系统,主要利用JavaServer Pages (JSP) 技术和...在线书店项目提供了一个实际的场景,帮助你将理论知识转化为实践经验,更好地理解和掌握JSP和JavaBean的协作机制。

    PL/SQL解析、生成XML例子

    Oracle提供了XMLGenerator API,这是一组过程和函数,它们可以将数据转化为XML格式。比如,DBMS_XMLGEN包中的NewContext函数创建一个XML生成器,然后通过GetXML函数将数据表的记录转换成XML格式。这个过程可以结合...

    DOM4J创建XML是一个实例

    - 将JavaBean的数据转化为XML元素,并构建完整的XML结构。 - 将生成的XML文档写入磁盘。 5. 实例2:将文本串转换为XML并存盘 - 接收用户输入的文本字符串,该字符串可能包含XML结构信息。 - 使用DOM4J的`...

    将xml转化为java对象 附带说明

    将xml转化为java对象 附带说明 运行以下代码: xjc -d . -p com.unis.bo ./amsbean.xsd xjc -dtd -d . -p com.wdhis.plugs.model.mahi ./Admission.dtd 利用java自带的xjc命令生成java类

    Dm4J操作xml文件.rar

    例如,XML文件中的一个`&lt;employee&gt;`节点可能对应于一个`Employee` JavaBean对象,其中节点的属性如`id`、`name`和`position`会映射到`Employee`类的相应字段。 2. **JavaBean到XML的转换**:相反,Dm4J也支持将...

    jaxb解析xml

    JAXB (Java Architecture for XML Binding) 是一种基于 Java 的 XML 绑定技术,主要功能是根据 DTD 或者 XML Schema 将 XML Element 转化为 Java 类。JAXB 将 XML 文本流转化为 Java Object,把 XML Processing 转化...

    JSP+XML构架网站的实例

    **生成动态XML**涉及到从数据库中提取数据并转化为XML文档。这通常需要一个能够处理字符串的系统,如Java Servlet、Enterprise JavaBean (EJB)服务器、Java Database Connectivity (JDBC)以及RDBMS。XML文档的生成...

    iReport使用JavaBean做数据源

    在软件开发中,报表生成是一个常见的需求,而iReport是一款广泛使用的开源报表设计工具,它允许开发者创建复杂的报表,并支持多种数据源,包括数据库、XML、JavaBean等。本文将详细讲解如何在iReport中使用JavaBean...

Global site tag (gtag.js) - Google Analytics