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);
}
}
分享到:
相关推荐
javax.xml.crypto 用于 XML 加密的通用类。 javax.xml.crypto.dom javax.xml.crypto 包的特定于 DOM 的类。 javax.xml.crypto.dsig 用于生成和验证 XML 数字签名的类。 javax.xml.crypto.dsig.dom javax.xml....
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....
javax.xml.crypto 用于 XML 加密的通用类。 javax.xml.crypto.dom javax.xml.crypto 包的特定于 DOM 的类。 javax.xml.crypto.dsig 用于生成和验证 XML 数字签名的类。 javax.xml.crypto.dsig.dom javax.xml....
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....
javax.xml.crypto 用于 XML 加密的通用类。 javax.xml.crypto.dom javax.xml.crypto 包的特定于 DOM 的类。 javax.xml.crypto.dsig 用于生成和验证 XML 数字签名的类。 javax.xml.crypto.dsig.dom javax.xml....
javax.xml.crypto 用于 XML 加密的通用类。 javax.xml.crypto.dom javax.xml.crypto 包的特定于 DOM 的类。 javax.xml.crypto.dsig 用于生成和验证 XML 数字签名的类。 javax.xml.crypto.dsig.dom javax.xml....
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....
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...
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章 快速入门 ...
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章 快速入门 ...