`
java从入门到放弃
  • 浏览: 44712 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java将xml转成对象是如此轻松-Unmarshaller

阅读更多

dom解析和sax解析都是小儿科,今天这个Marshaller和Unmarshaller才是真正的xml解析神器,非常叼。大家准备好跟我一起摇摆了吗??咱们先把道具上了,一个xml文件

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
<girl><name>lily</name><cup>D</cup><age>18</age></girl>
<girl><name>lucy</name><cup>F</cup><age>20</age></girl>
<girl><name>lisa</name><cup>a</cup><age>17</age></girl>
</root>
 好了,大家看到这个文件了,我们必须搞一个类,叫Girl,然后读这个xml,一共读到三个对象,然后输出来,先定义一个Girl,并且写一个toString方法:

 

@XmlAccessorType(XmlAccessType.FIELD)  
class Girl {
	
	@XmlElement(name = "name")
	private String name;
	
	@XmlElement(name = "age")
	private String age;
	
	@XmlElement(name = "cup")
	private String cup;
	
	public String toString(){
	  return name+","+age+","+cup+"\n";
	}
	
	public String getAge() {return age;}
	public void setAge(String age) {this.age = age;}
	public String getName() {return name;}
	public void setName(String name) {this.name = name;}
	public String getCup() {return cup;}
	public void setCup(String cup) {this.cup = cup;}
}

 

因为我们是拿一个List的,但是我们发现unmarshal()这个方法返回的是一个Object,而且我们本身也是要先拿root下面的所有girl标签的,所以,咱们可以搞一个Root类,并且我们写一个toString的方法:

@XmlAccessorType(XmlAccessType.FIELD)  
@XmlRootElement(name = "root")  
class Root{
	@XmlElement(name = "girl")  
	private List<Girl> girls;
	
	public String toString(){
		StringBuilder sb=new StringBuilder();
		for(Girl girl:girls){
			sb.append(girl.toString());
		}
		return sb.toString();
	}

	public List<Girl> getGirls() {return girls;}
	public void setGirls(List<Girl> girls) {this.girls = girls;}
}

 好了,这些底层的工作做好以后,让他跑起来瞧瞧吧!!

public static void main(String[] args) {
	try {
	      File file = new File("D:\\fileDemo\\girl.xml");
	      JAXBContext jaxbC = JAXBContext.newInstance(Root.class);
	      Unmarshaller us = jaxbC.createUnmarshaller();
	      Root root=(Root)us.unmarshal(file);
	      System.out.println(root.toString());
		 } catch (JAXBException e) {
			e.printStackTrace();
		}
	}

 

看看运行结果:

lily,18,D
lucy,20,F
lisa,17,a

 

帅!!!!!!

 

稍微总结一下,怎么用Unmarshaller去解析咱们的xml文件。

 

1、从最里层开始(girl),把我们想要的节点标记好了:@XmlElement(name = "xxx"),并且给出他的get,set方法。

     同时,要给Girl这个class加上@XmlAccessorType(XmlAccessType.FIELD) ,表示使用这个类中的 private 非静态字段作为 XML 的序列化的属性或者元素。  也就是说,咱们把里边的Girl类中的name来表示xml文件中的name,非常简单。当然,我们需要在name的头上加一顶小帽子:

    @XmlElement(name = "name")

 

2、但是我们惊人得发现: JAXBContext.newInstance()这个方法必须要传进来一个class,同时我们的返回结果也只是一个Object,那咋整呢?机智的我想出一个绝世的好办法:再建一个类,用来存放 List<Girl>这样不就OK了?

 

3、调用的时候分三步:

 a、 获取一个jaxbcontent的实例

 b、 jabccontent创建一个Unmarshaller对象

 c、 执行ummarshal方法

       

 a、JAXBContext jaxbC = JAXBContext.newInstance(Root.class);
 b、Unmarshaller us = jaxbC.createUnmarshaller();
 c、Root root=(Root)us.unmarshal(file);

    

 

好了,明天再给大家演示这个怎么把对象搞成xml            

 
分享到:
评论

相关推荐

    webservice之使用jaxb把xml转换Object或把对象转换成xml文件

    3. 解析XML:有了Java类,我们就可以使用JAXB提供的`Unmarshaller`接口将XML文档解析成Java对象。以下是一个简单的示例: ```java JAXBContext jaxbContext = JAXBContext.newInstance(User.class); Unmarshaller ...

    如何将java对象转换成xml

    在Java编程中,将Java对象转换为XML是一个常见的任务,特别是在数据交换或持久化数据时。这个过程通常称为对象XML序列化。以下是一些关于如何实现这一转换的关键知识点: 1. **Java对象到XML的转换工具**: - **...

    castor :Java与xml互转示例---代码

    - **XML到Java对象的绑定(XML Binding)**:将XML文档解析成Java对象模型。 - **Java对象到XML的序列化**:将Java对象转换成XML格式的字符串或文件。 - **支持复杂的数据结构**:包括嵌套对象、数组、集合等。 - **...

    利用JAXB进行xml和javabean之间转换

    而JAXB(Java Architecture for XML Binding)是Java提供的一种标准API,它允许我们轻松地在Java对象(javabean)和XML文档之间进行转换。通过JAXB,开发者可以避免手动编写XML解析和序列化代码,极大地提高了开发...

    JAXBContext测试Java对象与xml的相互转换Demo

    在Java世界中,Java Architecture for XML Binding (JAXB) 是一个强大的工具,它允许开发者将Java对象和XML数据进行互换。JAXBContext是JAXB框架的核心,它扮演着一个工厂的角色,负责创建Unmarshaller(用于从XML到...

    JAXB_Java Architecture For XML Binding

    Java Architecture for XML Binding (JAXB) 是Java平台上的一个标准技术,它允许程序开发者将XML文档与Java对象之间进行绑定,实现XML数据的序列化和反序列化。JAXB是Java SE和Java EE环境中的一部分,提供了高效且...

    xsd转换成java对象

    XSD转换成Java对象的过程,也称为XML到Java对象的绑定或者XML Schema Binding,是将XML数据映射为Java类,使得程序能够方便地读取、操作和验证XML数据。这一过程在处理XML数据丰富的系统中非常常见,如Web服务或企业...

    Java与XML数据绑定

    Java与XML数据绑定是将Java对象与XML文档之间的映射关系进行自动化处理的一种技术,它极大地简化了在Java应用中处理XML数据的工作流程。在Java世界中,JAXB(Java Architecture for XML Binding)是Java EE平台的一...

    Java与xml互转

    `Marshaller`用于将Java对象转换为XML,而`Unmarshaller`则负责将XML转换回Java对象。例如: ```java import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller...

    利用jaxb实现xml和bean互转

    5. **Unmarshalling**: 使用`Unmarshaller`对象将XML字符串或文件解析回Java Bean实例。 6. **绑定文件(bindings file)**: 如果默认的注解不满足需求,可以创建一个绑定文件来更精细地控制XML到Java的映射。 **...

    用java读取修改xml文件的代码实现

    JAXB允许将Java对象与XML数据绑定,方便地在两者之间进行转换。对于简单的XML操作,JAXB提供了一种简单而高效的方式。首先,需要为XML元素创建对应的Java类,然后使用`javax.xml.bind.JAXBContext`和`Unmarshaller`...

    java系列化为xml对象。

    在这个场景下,我们关注的是如何将Java对象转换成XML或JSON格式,这两种格式广泛用于数据交换和网络通信。XML(eXtensible Markup Language)是一种标记语言,提供了一种结构化的数据表示方法,而JSON(JavaScript ...

    xml和bean 互相转换

    1. **解析XML**:Java中使用DOM(文档对象模型)、SAX(简单API for XML)或StAX(流式API for XML)等解析器读取XML文件并将其转化为内存中的对象结构。DOM一次性加载整个XML文档,适合小文件;SAX事件驱动,逐行...

    Java中四种XML解析技术详解

    JAXB是一种对象到XML的自动映射框架,它可以将Java对象转换为XML,反之亦然。这种方式特别适用于对象-XML之间的双向转换,简化了数据交换。在Java中,`javax.xml.bind.JAXBContext`和`Unmarshaller`、`Marshaller`类...

    jaxb XMl和BEAN互转实例(内含jar包)

    这个技术使得我们可以轻松地将XML文档解析为Java对象,同时也能够将Java对象序列化为XML文档。在给定的"jaxb XMl和BEAN互转实例(内含jar包)"中,我们有一个实用工具类,它简化了使用JAXB进行XML与BEAN对象之间转换...

    支持XML转Bean

    通过定义Bean类、添加注解、创建JAXBContext以及使用Unmarshaller,开发者可以轻松地将XML文档转换为可操作的Java对象。在实际项目中,这可以提高代码的可读性和可维护性。在提供的压缩包文件`xmlToBean`中,很可能...

    stax+jaxb进行xml解析

    - 使用Unmarshaller对象的unmarshal方法,将XML事件转换为Java对象。 - 反之,使用Marshaller对象的marshal方法,将Java对象转换为XML字符串或写入文件。 4. **所需库**: - StAX的实现库,如Woodstax,需要添加...

    处理对象与xml之间的转换demo

    本教程将详细介绍如何在Java、Python和C#这三种主流编程语言中实现对象到XML以及XML到对象的转换,以满足不同需求。 **1. Java** 在Java中,我们可以使用JAXB(Java Architecture for XML Binding)库进行对象与...

    JAXB 利用xsd文件生成java类

    JAXB (Java Architecture for XML Binding) 是Java平台上的一个标准,用于将XML文档与Java对象之间进行绑定,实现XML数据的解析和序列化。在Java开发中,JAXB提供了一种方便的方式,允许开发者通过XML Schema (XSD) ...

    jaxb (XML操作)

    **JAXB(Java Architecture for XML Binding)** 是Java平台中用于处理XML的一种强大的工具,它提供了将XML文档与Java对象之间的映射,从而方便XML数据的解析和生成。通过JAXB,开发者可以轻松地实现XML数据到Java...

Global site tag (gtag.js) - Google Analytics