java对象转成xml是如此简单-Marshaller

   我们已经知道了怎么样去讲xml转成对象了,现在,我们要把对象成xml文件,那怎么搞呢??

非常简单,大家跟着我一步一步去做就OK啦。

  我们现在有3个姑娘,分别是小红,小芳,小丽,现在,我们要把他们三个的信息存进一个叫girl.xml的文件中,并且这个xml的根节点叫root。我们首先定义好Girl。  

@XmlAccessorType(XmlAccessType.FIELD)  
class Girl {
	
	public Girl(){
		super();
	}
	
	public Girl(String name,String age,String cup){
		this.name=name;
		this.age=age;
		this.cup=cup;
	}
	
	@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";
	}
	
	//get方法和set方法···
}

 我们还要定义一个Root,因为他是根节点,并且他是所有的Girl的父节点,大家看:

@XmlRootElement(name = "root")  
class Root{

	@XmlElement(name = "girl")  
	private List<Girl> girls;
	

	public List<Girl> getGirls() {
		return girls;
	}

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

 我们跑起来看看:

public static void main(String[] args) {
		  try {
	      JAXBContext jaxbC = JAXBContext.newInstance(Root.class);
	      Marshaller ms=jaxbC.createMarshaller();
	      ms.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
	      Root root=new Root();
	      List<Girl> girls=new ArrayList<Girl>();
	      Girl g1=new Girl("小红", "20", "F");
	      Girl g2=new Girl("小芳", "16", "A");
	      Girl g3=new Girl("小丽", "17", "B");
	      girls.add(g1);
	      girls.add(g2);
	      girls.add(g3);
	      root.setGirls(girls);
	      StringWriter sw=new StringWriter();
	      ms.marshal(root, sw);
	      System.out.println(sw.toString());
		 } catch (JAXBException e) {
			e.printStackTrace();
		}
	}

 点击run,大家看:



 

是不是很赞???

来来来,总结一下,将java对象转成xml,用marshaller这个接口,我们需要做以下的事情:

1、定义好pojo,上面例子中的Girl和Root类

2、获取JAXBContext(jaxb上下文)

3、 Marshaller ms=jaxbC.createMarshaller();

       ms.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);

  创建marshaller的接口并且给他设置属性

4、给Root,Girl赋值,并且执行    ms.marshal(root, sw);

总结完用法之后,我们来学习一下Unmarshaller和Marshaller的原理吧,知道了原理,才算真正的牛逼!!!

猜你喜欢

转载自linbulu.iteye.com/blog/2296210