`
fred_张浩
  • 浏览: 32321 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

实用工具(一)-------java对象类、XML格式的相互转换

阅读更多
在上一篇文章中对于http请求的使用过程中发现,由于是系统间的交互因而请求的报文不仅仅是java对象,更多的可能是xml格式与json格式的报文,为方便后期使用,封装了一个转换工具类。
首先java对象与xml的相互转换需要使用到jaxb来实现,pom文件中加载jaxb-api。
jaxb进行转换的核心类为:Unmarshaller(xml转换为java对象)与Marshaller,首先初始化jaxbContext
JAXBContext context = JAXBContext.newInstance(classType);
然后根据转换源获取Unmarshaller或者Marshaller具体代码如下:
/**
	 * xml转换为java对象
	 * */
	@SuppressWarnings("unchecked")
	public T xmlToBean(String xml,Class classType){
		T t = null;
		try {
			JAXBContext context = JAXBContext.newInstance(classType);
			Unmarshaller unMarshaller = context.createUnmarshaller();
			t = (T)unMarshaller.unmarshal(new StringReader(xml));
			System.out.println(t);
		} catch (JAXBException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return t;
	}
	
	/**
	 * java对象转换为xml
	 * */
	public String beanToXml(T t){
		StringBuffer buffer = new StringBuffer();
		JAXBContext context;
		Marshaller marshaller;
		try {
			context = JAXBContext.newInstance(t.getClass());
			marshaller = context.createMarshaller();
			marshaller.marshal(t, new File("test.xml"));
			InputStreamReader reader = new InputStreamReader(new FileInputStream("test.xml"));
			int temp;
			while((temp = reader.read())!=-1){
				buffer.append((char)temp);
			}
			System.out.println(buffer);
		} catch (JAXBException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return buffer.toString();
	}
通过以上方式转换时需要注意的是java对象实体必须用jaxb注解进行表述,具体如下:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Student {

	@XmlElement(name = "id_")
	private Integer id;
	
	@XmlElement(name = "name_")
	private String name;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	/**
	 * 
	 */
	public Student() {
		super();
	}

	@Override
	public String toString() {
		return String.format("Student [id=%s, name=%s]", id, name);
	}
	
}
其中如果需要对字段的名称进行自定义时就必须使用@XmlAccessorType(XmlAccessType.FIELD)。
若需要对xml报文进行多层嵌套,则使用集合,比如:
@XmlRootElement(name = "request")
@XmlAccessorType(XmlAccessType.FIELD)
public class Group {

	@XmlElement(name = "group_id")
	private Integer groupId;
	
	@XmlElement(name = "group_name")
	private String groupName;
	
	@XmlElementWrapper(name = "students")
	@XmlElement(name = "student")
	private List<Student> students;

	public Integer getGroupId() {
		return groupId;
	}

	public void setGroupId(Integer groupId) {
		this.groupId = groupId;
	}

	public String getGroupName() {
		return groupName;
	}

	public void setGroupName(String groupName) {
		this.groupName = groupName;
	}

	public List<Student> getStudents() {
		return students;
	}

	public void setStudents(List<Student> students) {
		this.students = students;
	}

	@Override
	public String toString() {
		return String.format("Group [groupId=%s, groupName=%s]", groupId,
				groupName);
	}
	
	
	
	
}
,下面是测试代码:
public static void main(String[] args) {
		//xml转换为java对象
		StringBuilder sb = new StringBuilder();  
        sb.append("<?xml version='1.0' encoding='UTF-8'?>");  
        sb.append("<student>");  
        sb.append("     <id_>43283344</id_>");  
        sb.append("     <name_>中文测试</name_>");  
        sb.append("</student>");  	
		new XmlUtil().xmlToBean(sb.toString(),Student.class);
		
		
		//java对象转换为xml格式
		/*Group group = new Group();
		Student s = new Student();
		s.setId(123123);
		s.setName("测试中文");
		Student s1 = new Student();
		s1.setId(123123);
		s1.setName("测试中文");
		group.setGroupId(111);
		group.setGroupName("fredzhanghao");
		List<Student> list = new ArrayList<Student>();
		list.add(s);
		list.add(s1);
		group.setStudents(list);
		new XmlUtil().beanToXml(group);*/
	}

而对于json格式与java对象的相互转换也同理可以参考已封装的json-lib进行快速转换。
1
1
分享到:
评论

相关推荐

    java一键xml转map,一键map转xml工具类

    总结来说,`EasyXmlUtil`是一个实用的Java工具类,它封装了XML与Map之间的相互转换功能,使得开发者能方便快捷地处理这两种数据格式。通过理解和使用此类,可以提高开发效率,简化数据处理的复杂性。在项目中,只需...

    XML与Java对象互相转化Demo(Eclipse)

    在Java编程中,XML与Java对象的相互转化是常见的需求,特别是在持久化、配置文件处理或网络通信中。本教程通过一个Eclipse项目演示了如何实现这一转化。 首先,我们需要理解XML文档的基本结构。XML文档由元素...

    用JOX实现xml和javabean的相互转换

    总结来说,JOX是Java开发中一个实用的工具,尤其在处理XML数据和Java对象之间的转换时。它简化了XML与JavaBeans之间的交互,提高了开发效率,使得处理XML变得更加简单。通过定义符合JavaBeans规范的类,开发者可以...

    Java XML绑定技术 (Castor JAXB XMLBeans)

    它是Java EE标准的一部分,提供了一种机制来将Java对象与XML文档相互转换。使用JAXB,可以通过简单的API调用来序列化和反序列化Java对象为XML文档,反之亦然。 **特点:** - **简单易用**:只需在Java类上添加一些...

    xml与javabean的相互转换

    将XML与JavaBean相互转换是Java开发中的常见需求,尤其是在处理配置文件或对象持久化时。 在Java中,XML与JavaBean之间的转换主要依赖于两个关键的技术:JAXB(Java Architecture for XML Binding)和DOM(Document...

    Java工具包Hutool Wiki PDF版

    Java工具包Hutool是一个开源的Java工具类库,它集成了许多在日常开发中常用的功能模块,旨在简化Java开发的工作量,提高开发效率。Hutool的命名来源于对“Hu”(致敬前任公司)和“tool”(工具)的合成,同时谐音...

    使用gson,java对象和json字符串之间相互转化

    Gson是Google提供的一个开源库,它允许我们在Java对象和JSON字符串之间进行无缝转换。本文将深入探讨如何使用Gson库进行这种转化操作。 首先,我们需要引入Gson库。如果你使用Maven,可以在pom.xml文件中添加以下...

    XML Helper

    - 将XML数据与Java对象相互转换。 - 提供查询XML数据的方法,比如XPath表达式的支持。 总结起来,"XML Helper"可能是一个强大的Java工具,用于简化XML的处理任务,提高开发效率。其核心功能可能围绕XML的解析、创建...

    json-lib通用类

    `jsonUtil.txt` 文件可能是一个包含了`json-lib`使用示例或者实用工具函数的文本文件,它可能包含如何创建JSON对象、如何将Java对象转换为JSON以及如何处理复杂数据结构(如嵌套对象和数组)的代码片段。在实际项目...

    dom4j的基础教程和dom4j的API,实用的xml处理工具

    6. **与JAXB集成**:DOM4J可以与Java的另一个XML处理框架JAXB无缝集成,实现对象与XML之间的相互转换。 在"Dom4j用法详解.doc"中,你可能会看到以下内容: - 如何使用DOM4J解析XML文件,包括选择合适的解析器,加载...

    json-lib学习用完整jar包

    在Java开发中,json-lib是一个非常实用的库,它提供了丰富的API来处理JSON数据,包括序列化Java对象为JSON字符串,以及反序列化JSON字符串回Java对象。本篇文章将深入探讨json-lib库的使用方法、功能特性及其在实际...

    java如何与脚本(javaScript)之间相互调用二

    JavaScript也可以调用Java对象,通过`JavaObject`接口,Java对象可以在JavaScript环境中使用。例如,可以将Java函数注册到JavaScript上下文中,然后在JavaScript代码中调用: ```java engine.put("myJavaFunction",...

    json-lib-2.4-jdk15.jar,json开发jar包

    3. **XML与JSON互转**:json-lib还支持XML与JSON之间的相互转换,这对于那些需要在XML和JSON间切换的项目非常有用。 4. **序列化与反序列化**:可以将Java对象序列化为JSON字符串,然后在需要时再反序列化回来,这...

    xom-1.1.jar包

    Json-lib是一个Java库,它提供了多种数据类型(如Java集合、Map、Array等)与JSON的相互转换功能。在处理涉及XML和JSON混合的数据时,开发人员可以先利用XOM解析XML,然后通过Json-lib将解析得到的XML对象转换为JSON...

    mongodb-test-mvn:MongoDB3.x的实践示例,内含一个非常简单易用的对象转换的工具类可用于实体类与MongoDB对象之间的相互转换

    总结来说,"mongodb-test-mvn"项目提供了一个实用的工具类,帮助Java开发者在MongoDB 3.x环境中更方便地进行对象转换,简化了数据操作。学习并应用这个示例,可以提升你在处理MongoDB数据时的效率和灵活性。

    Apache Commons 工具类介绍及简单使用 (2).pdf

    Betwixt 是 Apache Commons 中的一个工具类,提供了 XML 与 Java 对象之间相互转换的功能。通过使用 Betwixt,可以轻松地将 XML 文件转换为 Java 对象,或者将 Java 对象转换为 XML 文件。 Codec Codec 是 Apache ...

    json-lib.rar

    2. Java对象与JSON的相互转换:json-lib支持将Java的基本类型、集合、Map以及自定义对象直接转换为JSON格式,反之也可以将JSON数据还原为Java对象。这对于数据交换和序列化非常有用。 3. JSON格式的处理:库中包含...

    dom4j-json-Gson完整jar包

    Gson是Google提供的一个开源库,它允许Java对象和JSON数据之间进行相互转换。Gson可以轻松地将Java对象转换为JSON字符串,反之亦然,这对于网络通信和数据存储非常有用。例如,当你需要将Java对象发送到服务器或者从...

    Json-lib-2.4.jdk15.jar

    "Json-lib-2.4.jdk15.jar" 是一个针对Java平台的JSON处理库,主要功能是提供JSON和Java对象之间的相互转换。Json-lib是一个开放源代码项目,它支持多种Java环境,包括JDK1.5。这个版本(2.4.jdk15)特别强调了对JDK...

Global site tag (gtag.js) - Google Analytics