Java bean 转xml

Province class

package com.apptest.xstream.test;

import java.util.ArrayList;
import java.util.List;

public class Province {
	private String name;
	private List<City> list = new ArrayList<City>();
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public List<City> getList() {
		return list;
	}
	public void setList(List<City> list) {
		this.list = list;
	}

	public void addCity(City city) {
		this.list.add(city);
	}

	@Override
	public String toString() {
		return "Province [name=" + name + "]";
	}

}

  City class

package com.apptest.xstream.test;

public class City {
	private String name;
	private String description;
	public City(String name, String description) {
		super();
		this.name = name;
		this.description = description;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
	@Override
	public String toString() {
		return "City [name=" + name + ", description=" + description + "]";
	}

}

  Test class

package com.apptest.xstream.test;

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

import com.thoughtworks.xstream.XStream;

public class XStreamDemo {

	/**
	 * 获取省份list
	 * @return ArrayList<Province> list
	 */
	public List<Province> getProvinceList() {
		Province p1 = new Province();
		p1.setName("江西");
		p1.addCity(new City("萍乡市","PingXiang"));
		p1.addCity(new City("上饶市","ShangRao"));

		Province p2 = new Province();
		p2.setName("上海");
		p2.addCity(new City("闸北区","ZhaBeiQu"));
		p2.addCity(new City("徐汇区","XuHuiQu"));

		List<Province> list = new ArrayList<Province>();
		list.add(p1);
		list.add(p2);

		return list;
	}

	@Test
	public void func1() {
		List<Province> list = getProvinceList();
		XStream xStream = new XStream();
		xStream.alias("china", List.class);
		xStream.alias("province", Province.class);
		xStream.alias("city", City.class);
		xStream.useAttributeFor(Province.class, "name");
		xStream.addImplicitCollection(Province.class, "list");
		xStream.omitField(City.class, "description");

		String s = xStream.toXML(list);
		System.out.println(s);
	}
}

  Result

<china>
  <province name="江西">
    <city>
      <name>萍乡市</name>
    </city>
    <city>
      <name>上饶市</name>
    </city>
  </province>
  <province name="上海">
    <city>
      <name>闸北区</name>
    </city>
    <city>
      <name>徐汇区</name>
    </city>
  </province>
</china>

  

时间: 2024-10-27 06:36:35

Java bean 转xml的相关文章

JAVA bean与XML互转---XStream

最近在项目中遇到了Java bean 和XML互转的需求, 本来准备循规蹈矩使用dom4j忽然想起来之前曾接触过的XStream, 一番研究豁然开朗,利器啊利器, 下来就XStream的一些用法与大家分享. XStream是大名鼎鼎的thought works下的一个开源项目, 主要功能是提供JAVA bean 和XML文本之间的转换,另外还提供JAVA bean和JSON之间的转换,这个不在本次讨论的范围内. XStream进行转换是非常简单的,对JAVA bean没有任何要求: 不要求对pr

JAVA bean与XML互转的利器---XStream

最近在项目中遇到了JAVA bean 和XML互转的需求, 本来准备循规蹈矩使用dom4j忽然想起来之前曾接触过的XStream, 一番研究豁然开朗,利器啊利器, 下来就XStream的一些用法与大家分享. XStream是大名鼎鼎的thought works下的一个开源项目, 主要功能是提供JAVA bean 和XML文本之间的转换,另外还提供JAVA bean和JSON之间的转换,这个不在本次讨论的范围内. XStream进行转换是非常简单的,对JAVA bean没有任何要求: 不要求对pr

基于Java Bean Validation对Request参数进行校验的设计思路

摘自Hibernate Validator文档: 数据校验是任何一个应用程序都会用到的功能,无论是显示层还是持久层. 通常,相同的校验逻辑会分散在各个层中, 这样,不仅浪费了时间还会导致重复代码的发生. 为了避免重复, 开发人员经常会把这些校验逻辑直接写在领域模型里面, 但是这样又把领域模型代码和校验代码混杂在了一起, 而这些校验逻辑更应该是描述领域模型的元数据. JSR 303 - Bean Validation (version 1.1)- 为实体验证定义了元数据模型和API. 默认的元数据

org.w3c.dom(java dom)解析XML文档

位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效果可能会不理想 首先来了解点Java DOM 的 API:1.解析器工厂类:DocumentBuilderFactory 创建的方法:DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 2.解析器:DocumentBuilder 创建方法:通过解析器工厂类来获得 DocumentBu

简单Java类与XML之间的转换

需要的jar包:xmlpull_1_0_5.jar,xstream-1.4.1.jar) 1.工具类XstreamUtil package com.learn.util; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; /** * * @ClassName: XstreamUtil.java  * @Description: * @author: fengzf [

Java+MyEclipse+Tomcat (五)DAO和Java Bean实现数据库和界面分开操作

正如前面一篇文章的介绍,当使用Servlet提交表单和JSP数据库查询时,总是相互交叉着的处理,要么在JSP中通过<%...%>内嵌Java代码操作数据库,要么JSP中通过Post方法提交表单Form,在Java中通过Servlet获取请求/响应,再通过Java中out.println("<HTML>...")输出数据库中值. 此篇文章主要讲述通过DAO和Java Bean操作数据库,把链接数据库.数据库操作.前端界面显示分模块化实现.参考前文: Java+My

json:JSONObject包的具体使用(JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包)

1.JSONObject介绍 JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包. 2.下载jar包 http://xiazai.jb51.net/201707/yuanma/lib_jb51.rar 提供了除JSONObject的jar之外依赖的其他6个jar包,一共7个jar文件 说明:因为工作中项目用到的版本是1.1的对应jdk1.3的版本,故本篇博客是基于1.1版本介绍的. 对应此版本的javadoc下载

java bean 转换工具

考量要素: 1.简单的约定优于配置的同名属性copy 2.嵌套属性copy 3.flattern(扁平化)支持,要支持N层结构的copy到一层结构. 4.性能 如下这个网页,里面提到了好多工具. http://stackoverflow.com/questions/1432764/any-tool-for-java-object-to-object-mapping 注意到许多工具采用静态化的生成java字节码的方式,这样和hardcode性能所差无几了. id 描述 是否支持flattern 最

跟我一起学extjs5(29--加入模块和菜单定义[2建立java bean])

跟我一起学extjs5(29--加入模块和菜单定义[2建立java bean]) 对上一节中加入的4个模块在java中建立相应的bean文件. 以上表建立好以后,需要建立java bean文件.在建立之前需要加入几个支持类. 先在com.jfok.server.common中建立包annotation,再在下面加入二个类库,这二个是自定义的注释类.分别用来注释每一个模块的信息和模块中每一字段的信息. package com.jfok.server.common.annotation; impor