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....
Java工具类是编程中不可或缺的一部分,它们是一系列预先编写好的静态方法集合,旨在提供便捷、通用的功能,以提高开发效率。这些工具类通常被封装在各种包中,如`java.util`、`java.io`、`java.text`等,涵盖了许多...
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....
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....
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扩展类与属性知识点解析 #### 一、DesktopSystemTray与AWT新特性 在Java Development Kit (JDK) 1.6版本中,新增加了一个非常实用的功能——`Desktop.SystemTray`。此功能是AWT(Abstract Window ...
- 序列化和反序列化操作,例如JAXB在Java中用于XML与Java对象之间的映射。 - 编写通用的测试框架,动态调用测试用例。 - Java Web开发中使用Servlet API等。 9. 使用反射的注意事项: - 反射会降低程序的性能,因为...
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.bind.annotation.jar`: 包含JAXB的注解定义。 4. **HTTP客户端**: 为了通过HTTP/HTTPS协议发送请求,可能需要: - `httpclient.jar`: Apache HttpClient库,提供HTTP通信功能。 - `...
这些通用注解最初是在Java EE 5.0中引入的,但在JDK 1.6中作为标准库的一部分被包含进来,为开发人员提供了更多的注解支持。 综上所述,JDK 1.6通过引入这些新特性大大增强了Java平台的功能性和灵活性,不仅改善了...
2. **jersey-media-jaxb.jar** - 支持JAXB(Java Architecture for XML Binding)进行XML到Java对象的绑定,使得数据可以方便地在RESTful服务中进行序列化和反序列化。 3. **jersey-client.jar** - 提供了客户端API...
例如,日志、事务管理等通用功能可以作为切面实现,而不必侵入业务代码。 3. **Data Access/Integration**:这个模块包含了对多种数据访问技术的支持,如JDBC、ORM(Hibernate、JPA)、OXM(Object/XML Mapping)、...
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章 快速入门 ...