`
fuqiangjava
  • 浏览: 12218 次
  • 性别: 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 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....

    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 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....

    [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....

    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...

    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