`
流浪鱼
  • 浏览: 1682705 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jaxb小工具类

    博客分类:
  • java
 
阅读更多
package jaxb.shop;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

public class JAXB
{

  /**
   * 把对象转换成xml
   * @param object   转换的对象
   * @param charset  xml的字符集
   * @param format   是否格式化
   * @return
   * @throws JAXBException
   */
  public static String objectToXml(Object object, String charset, boolean format)
    throws JAXBException
  {
    ByteArrayOutputStream baos = null;
    try {
      Marshaller m = JAXBContext.newInstance(new Class[] { object.getClass() }).createMarshaller();
      //指定生成xml的编码
      m.setProperty("jaxb.encoding", charset);
      //用来指定是否使用换行和缩排对已编组 xml 数据进行格式化的属性名称
      m.setProperty("jaxb.formatted.output", Boolean.valueOf(format));
      baos = new ByteArrayOutputStream();
      m.marshal(object, baos);
      return baos.toString();
    }
    finally {
      if (baos != null)
        try {
          baos.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
    }
  }

  /**
   * 对象转换为字符串
   * @param object  转换对象
   * @param format  是否格式化
   * @return
   * @throws JAXBException
   */
  public static String objectToXml(Object object, boolean format)
    throws JAXBException
  {
    ByteArrayOutputStream baos = null;
    try {
      Marshaller m = JAXBContext.newInstance(new Class[] { object.getClass() }).createMarshaller();
      m.setProperty("jaxb.encoding", System.getProperty("file.encoding"));
      m.setProperty("jaxb.formatted.output", Boolean.valueOf(format));
      baos = new ByteArrayOutputStream();
      m.marshal(object, baos);
      return baos.toString();
    }
    finally {
      if (baos != null)
        try {
          baos.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
    }
  }

  
  /**
   * xml转换成对象
   * @param objectClass   转换成对象Class
   * @param xml   xml字符串
   * @param charset  指定字符集
   * @return
   * @throws JAXBException
   */
  public static Object xmlToObject(Class objectClass, String xml, String charset)
    throws JAXBException
  {
    InputStream is = null;
    Unmarshaller um = null;
    try {
      is = new ByteArrayInputStream(xml.getBytes(charset));
      um = JAXBContext.newInstance(new Class[] { objectClass }).createUnmarshaller();
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();

      if (is != null)
        try {
          is.close();
        } catch (IOException exx) {
          exx.printStackTrace();
        }
    }
    finally
    {
      if (is != null)
        try {
          is.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
    }
    return um.unmarshal(is);
  }

  /**
   * xml转换成对象
   * @param objectClass
   * @param xml
   * @return
   * @throws JAXBException
   */
  public static Object xmlToObject(Class objectClass, String xml)
    throws JAXBException
  {
    InputStream is = null;
    Unmarshaller um = null;
    try {
      is = new ByteArrayInputStream(xml.getBytes(System.getProperty("file.encoding")));
      um = JAXBContext.newInstance(new Class[] { objectClass }).createUnmarshaller();
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();

      if (is != null)
        try {
          is.close();
        } catch (IOException exx) {
          exx.printStackTrace();
        }
    }
    finally
    {
      if (is != null)
        try {
          is.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
    }
    return um.unmarshal(is);
  }
}

 

分享到:
评论

相关推荐

    jaxb工具类

    java对象转换xml&xml;解析成java对象,主要是针对最近写的博文 jaxb工具使用的工具类

    JAXB工具类 xml转为java对象 java对象转为xml

    JAXB是Java开发中处理XML的强大工具,通过注解和API实现了XML与Java对象的自动转换。了解并熟练掌握JAXB,能够提升XML数据处理的效率和代码的可读性。在实际项目中,结合JAXB与XML Schema,可以构建更健壮、易于维护...

    JAXB工具

    首先,定义了一个名为`Product`的Java类,该类使用JAXB注解来指定XML映射规则。`@XmlRootElement`注解定义了XML根元素的名称和命名空间,`@XmlAccessorType`定义了访问类型,`@XmlType`注解提供了类级别的元数据,而...

    自用JAXB工具类,String类型XML和node节点和java类互转

    自用JAXB工具类,java内置,比XSteam快一倍多,内容比较齐全,下载即用,傻瓜式导入

    idea 中用jaxb 读xml中数据

    当我们需要处理XML文件,比如从XML中提取数据时,JAXB(Java Architecture for XML Binding)是一个强大的工具。本教程将详细解释如何在Idea中利用JAXB来读取XML文件中的数据。 JAXB是Java标准API,它提供了将Java...

    JAXB 利用xsd文件生成java类

    - **编译XSD到Java类**:使用JAXB的`xjc`工具,可以将XSD文件转换为Java源代码。`xjc`命令行工具通常包含在JDK中,也可以通过Maven或Gradle插件集成到构建流程中。 - **绑定配置**:通过在XSD文件中添加特殊的JAXB...

    JAXB的安装包及插件

    - **生成Java类**:JAXB提供了一个工具`xjc`,可以将XML Schema文档转换为对应的Java类。 - **对象到XML**:使用`Marshaller`类将Java对象转换为XML文档。 - **XML到对象**:使用`Unmarshaller`类将XML文档反序列...

    JAXB的 eclipse插件

    总结一下,JAXB的Eclipse插件是Java开发者处理XML数据的强大工具,它集成了XML Schema与Java类的相互转换、源代码编辑支持以及调试等功能。通过利用这些插件,开发者可以更加高效地进行XML相关的开发工作,实现Java...

    50个左右的JAVA工具类,相对比较全

    11. **XML处理工具类**:如DOM、SAX、StAX或JAXB,用于XML的解析和生成。 12. **日志记录工具类**:如Log4j、SLF4J、Java Util Logging等,提供灵活的日志记录方案。 这些工具类大大提升了代码的可读性和可维护性...

    JAXB jar包 工具

    在Java开发中,JAXB工具是处理XML文档的强大助手。它的工作原理主要分为两个部分:XML到Java对象的绑定(Unmarshalling)和Java对象到XML的绑定(Marshalling)。当给定一个XML Schema文件(XSD),JAXB可以自动生成...

    JAXB2 jaxb-api.jar jaxb-xjc.jar jaxb-impl.jar activation.jar

    2. **jaxb-xjc.jar**:XJC(XML Java Compiler)是JAXB的代码生成工具,可以将XML Schema(XSD)转换为对应的Java类。当你有XML Schema定义时,使用xjc工具可以自动生成符合该Schema的Java类,使得处理XML数据更为...

    java各种工具类-非常齐全

    Java是一种广泛使用的编程语言,其丰富的库和工具类极大地提升了开发效率。在Java中,工具类通常是封装了常见操作的静态方法集合,便于开发者在不同项目中复用。本资源包含了一系列全面的Java工具类,涵盖了多个核心...

    jaxb-api jaxb-impl jar

    1. **jaxb-api.jar**: 这个库包含了JAXB API,即Java接口和抽象类,定义了JAXB的工作方式。它提供了必要的接口和类,如`javax.xml.bind.JAXBContext`, `Unmarshaller`, `Unmarshaller`, 和 `Validator`等,用于实现...

    jaxb for xjc 命令 实体类生成工具

    XJC是JAXB的一部分,它是一个命令行工具,用于从XML Schema (XSD) 文件生成对应的Java实体类。这些实体类可以帮助开发者直接操作XML数据,而无需关心底层解析和序列化的细节。 在Java开发中,当处理XML数据时,通常...

    jaxb-api-2.1.jar 和 jaxb-impl-2.1.8.jar

    总的来说,`jaxb-api-2.1.jar` 和 `jaxb-impl-2.1.8.jar` 在Java开发中扮演着重要的角色,它们为XML数据处理提供了强大的工具,使得XML与Java对象之间的转换变得简单易行。然而,随着技术的发展,开发者也应关注新的...

    jaxb2 生产java类demo实例

    使用`jaxb binding compiler`(xjc)工具,我们可以从Java类生成对应的XML Schema(XSD),然后反向生成XML文件。在命令行中,可以运行以下命令: ``` xjc -d src-gen Person.java ``` 这将生成一个`src-gen`目录...

    jaxb生成XML例子

    JAXB (Java Architecture for XML Binding) 是 Java 中用于对象到XML以及XML到对象转换的API。它使得开发者能够轻松地将Java对象模型映射到...在实际开发中,JAXB是一个强大的工具,尤其在处理数据交换和序列化场景中。

    activation.jar jaxb1-impl.jar jaxb-api.jar jaxb-impl.jar jaxb-xjc.jar jsr173_1.0

    5. **jaxb-xjc.jar**:这个库包含了XJC工具,它是JAXB编译器,可以将XML Schema转换为对应的Java源代码。通过XJC,开发者可以直接从XML Schema生成Java类,从而简化了处理XML数据的工作。 6. **jsr173_1.0_api.jar*...

    java utils 工具类

    JavaUtils工具类是Java开发中常见的一类辅助代码集合,它们通常包含各种静态方法,用于简化常见的编程任务,提高开发效率。这篇博文链接(已提供但无法直接访问)可能详细探讨了JavaUtils工具类的设计原则、常用方法...

Global site tag (gtag.js) - Google Analytics