`
fuqiangjava
  • 浏览: 12528 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java JAXB annotation 通用类

xml 
阅读更多
import java.io.IOException;
import java.io.OutputStream;
import java.io.Reader;
import java.io.StringReader;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;

/**
 * XmlParserUtil xml与javabean互转
 * 
 */
public class XmlParserUtil
{

    /**
     * Parses the xml to object. 将Xml解析为对应的Object对象.
     * 
     * @param xmlStr
     *            the xml str
     * @param objectClass
     *            the object class
     * @return the object
     * @throws DocumentException
     *             the document exception
     * @throws JAXBException
     *             the jAXB exception
     */
    public static Object parseXmlToObject(String xmlStr, Class<?> objectClass) throws DocumentException, JAXBException
    {
        Document xmldoc = DocumentHelper.parseText(xmlStr);
        return parseXmlToObject(xmldoc, objectClass);
    }

    /**
     * 将Xml解析为对应的Object对象.
     * 
     * @param xmldoc
     *            Document
     * @param objectClass
     *            Class<?> Object的Class
     * @return Object
     * @throws JAXBException
     *             the jAXB exception
     */
    public static Object parseXmlToObject(Document xmldoc, Class<?> objectClass) throws JAXBException
    {
        Object object = null;

        JAXBContext context = JAXBContext.newInstance(objectClass);

        Unmarshaller unmarshaller = context.createUnmarshaller();

        String xmlStr = xmldoc.asXML();

        Reader reader = new StringReader(xmlStr);

        object = unmarshaller.unmarshal(reader);

        return object;

    }

    /**
     * 将Object解析为Xml
     * 
     * @param objectClass
     *            Object对应的Class
     * @param object
     *            Object对象
     * @param out
     *            输出流
     * @throws JAXBException Exception
     */
    public static void parseObjectToXml(Class<?> objectClass, Object object, OutputStream out) throws JAXBException
    {

        JAXBContext context = JAXBContext.newInstance(objectClass);

        Marshaller marshaller = context.createMarshaller();

        // 设置编组属性,使得输出的XML文档进行格式化(提供缩进)
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);

        marshaller.marshal(object, out);
    }

    /**
     * 
     * * 将Object解析为Xml    
     * 
     * @param objectClass Object对应的Class
     * @param object Object对象
     * @param out 输出流
     * @param encoding 编码
     * @throws JAXBException Exception
     */
    public static void parseObjectToXmlByEncoding(Class<?> objectClass, 
            Object object, OutputStream out, String encoding) throws JAXBException
    {

        JAXBContext context = JAXBContext.newInstance(objectClass);

        Marshaller marshaller = context.createMarshaller();

        // 设置编组属性,使得输出的XML文档进行格式化(提供缩进)
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
        marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);

        marshaller.marshal(object, out);
    }

    /**
     * 将Object解析为Xml.
     * 
     * @param objectClass
     *            Object对应的Class
     * @param object
     *            Object对象
     * @param out
     *            输出流
     * @throws JAXBException
     *             the jAXB exception
     * @throws IOException
     *             Signals that an I/O exception has occurred.
     */
    public static void parseObjectToXmlNoHeard(Class<?> objectClass, Object object, OutputStream out)
            throws JAXBException, IOException

    {
        JAXBContext context = JAXBContext.newInstance(objectClass);

        Marshaller marshaller = context.createMarshaller();

        // 设置编组属性,使得输出的XML文档进行格式化(提供缩进)
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
        // 去掉默认的头

        marshaller.setProperty("com.sun.xml.bind.xmlDeclaration", Boolean.FALSE);

        // 声明需要的头文件
        String str = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";

        out.write(str.getBytes("UTF-8"));

        marshaller.marshal(object, out);
    }
}
分享到:
评论

相关推荐

    JAVA_API1.6文档(中文)

    javax.xml.crypto 用于 XML 加密的通用类。 javax.xml.crypto.dom javax.xml.crypto 包的特定于 DOM 的类。 javax.xml.crypto.dsig 用于生成和验证 XML 数字签名的类。 javax.xml.crypto.dsig.dom javax.xml....

    java工具类

    Java工具类是编程中不可或缺的一部分,它们是一系列预先编写好的静态方法集合,旨在提供便捷、通用的功能,以提高开发效率。这些工具类通常被封装在各种包中,如`java.util`、`java.io`、`java.text`等,涵盖了许多...

    Java 1.6 API 中文 New

    javax.xml.crypto 用于 XML 加密的通用类。 javax.xml.crypto.dom javax.xml.crypto 包的特定于 DOM 的类。 javax.xml.crypto.dsig 用于生成和验证 XML 数字签名的类。 javax.xml.crypto.dsig.dom javax.xml.crypto....

    java api最新7.0

    javax.xml.crypto 用于 XML 加密的通用类。 javax.xml.crypto.dom javax.xml.crypto 包的特定于 DOM 的类。 javax.xml.crypto.dsig 用于生成和验证 XML 数字签名的类。 javax.xml.crypto.dsig.dom javax.xml.crypto....

    JavaAPI中文chm文档 part2

    javax.xml.crypto 用于 XML 加密的通用类。 javax.xml.crypto.dom javax.xml.crypto 包的特定于 DOM 的类。 javax.xml.crypto.dsig 用于生成和验证 XML 数字签名的类。 javax.xml.crypto.dsig.dom javax.xml....

    JavaAPI1.6中文chm文档 part1

    javax.xml.crypto 用于 XML 加密的通用类。 javax.xml.crypto.dom javax.xml.crypto 包的特定于 DOM 的类。 javax.xml.crypto.dsig 用于生成和验证 XML 数字签名的类。 javax.xml.crypto.dsig.dom javax.xml....

    [Java参考文档]

    javax.xml.crypto 用于 XML 加密的通用类。 javax.xml.crypto.dom javax.xml.crypto 包的特定于 DOM 的类。 javax.xml.crypto.dsig 用于生成和验证 XML 数字签名的类。 javax.xml.crypto.dsig.dom javax.xml....

    [Java参考文档].JDK_API 1.6

    javax.xml.crypto 用于 XML 加密的通用类。 javax.xml.crypto.dom javax.xml.crypto 包的特定于 DOM 的类。 javax.xml.crypto.dsig 用于生成和验证 XML 数字签名的类。 javax.xml.crypto.dsig.dom javax.xml.crypto....

    jdk1.6扩展类与属性.txt

    ### jdk1.6扩展类与属性知识点解析 #### 一、DesktopSystemTray与AWT新特性 在Java Development Kit (JDK) 1.6版本中,新增加了一个非常实用的功能——`Desktop.SystemTray`。此功能是AWT(Abstract Window ...

    Java语言的动态属性总结.pdf

    - 序列化和反序列化操作,例如JAXB在Java中用于XML与Java对象之间的映射。 - 编写通用的测试框架,动态调用测试用例。 - Java Web开发中使用Servlet API等。 9. 使用反射的注意事项: - 反射会降低程序的性能,因为...

    JDK_1_6 API

    javax.xml.crypto 用于 XML 加密的通用类。 javax.xml.crypto.dom javax.xml.crypto 包的特定于 DOM 的类。 javax.xml.crypto.dsig 用于生成和验证 XML 数字签名的类。 javax.xml.crypto.dsig.dom javax.xml.crypto...

    webservice客服端所需最少jar包

    - `javax.xml.bind.annotation.jar`: 包含JAXB的注解定义。 4. **HTTP客户端**: 为了通过HTTP/HTTPS协议发送请求,可能需要: - `httpclient.jar`: Apache HttpClient库,提供HTTP通信功能。 - `...

    jdk1.6 九大新特性

    这些通用注解最初是在Java EE 5.0中引入的,但在JDK 1.6中作为标准库的一部分被包含进来,为开发人员提供了更多的注解支持。 综上所述,JDK 1.6通过引入这些新特性大大增强了Java平台的功能性和灵活性,不仅改善了...

    jaxrs-ri2.23.1.zip

    2. **jersey-media-jaxb.jar** - 支持JAXB(Java Architecture for XML Binding)进行XML到Java对象的绑定,使得数据可以方便地在RESTful服务中进行序列化和反序列化。 3. **jersey-client.jar** - 提供了客户端API...

    Spring3.2.0 框架jar包及Spring依赖jar包

    例如,日志、事务管理等通用功能可以作为切面实现,而不必侵入业务代码。 3. **Data Access/Integration**:这个模块包含了对多种数据访问技术的支持,如JDBC、ORM(Hibernate、JPA)、OXM(Object/XML Mapping)、...

    Spring.3.x企业应用开发实战(完整版).part2

    1.5.3 可通过Java类提供IoC配置信息 1.5.4 通用类型转换系统和属性格式化系统 1.5.5 数据访问层新增OXM功能 1.5.6 Web层的增强 1.5.7 其他 1.6 Spring对Java版本的要求 1.7 如何获取Spring 1.8 小结 第2章 快速入门 ...

    Spring3.x企业应用开发实战(完整版) part1

    1.5.3 可通过Java类提供IoC配置信息 1.5.4 通用类型转换系统和属性格式化系统 1.5.5 数据访问层新增OXM功能 1.5.6 Web层的增强 1.5.7 其他 1.6 Spring对Java版本的要求 1.7 如何获取Spring 1.8 小结 第2章 快速入门 ...

Global site tag (gtag.js) - Google Analytics