`
zhoushu126
  • 浏览: 79632 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

XML转Java Java转XML

阅读更多
mport ibatis.Person;

import java.io.StringReader;

import org.apache.commons.betwixt.io.BeanReader;
/**
* XML转Java
*/ 
public class ReadExampleApp {
	public static final void main(String args[]) throws Exception {

		// 创建一个读取xml文件的流
		StringReader xmlReader = new StringReader(
				"<?xml version='1.0' ?><person><age>25</age><name>James Smith</name></person>");

		// 创建一个BeanReader实例,相当于转换器
		BeanReader beanReader = new BeanReader();

		// 配置BeanReader实例
		beanReader.getXMLIntrospector().getConfiguration()
				.setAttributesForPrimitives(false);
		beanReader.getBindingConfiguration().setMapIDs(false); // 不自动生成ID

		// 注册要转换对象的类,并指定根节点名称
		beanReader.registerBeanClass("person", Person.class);

		// 将XML解析Java Object
		Person person = (Person) beanReader.parse(xmlReader);

		// 在控制台输出对象
		System.out.println(person);
	}
}

 

import java.io.FileWriter;
import java.util.Date;

import org.apache.commons.betwixt.io.BeanWriter;
/**
* 将java对象转换为xml,并输出到文件
*/ 
public class WriteExampleApp {
	public static final void main(String[] args) throws Exception {

		// 创建一个输出流,将用来输出Java转换的XML文件
		FileWriter outputWriter = new FileWriter("c:\\person.txt");

		// 输出XML的文件头
		outputWriter.write("<?xml version='1.0' ?>\n");

		// 创建一个BeanWriter实例,并将BeanWriter的输出重定向到指定的输出流
		BeanWriter beanWriter = new BeanWriter(outputWriter);

		// 配置BeanWriter对象
		beanWriter.getXMLIntrospector().getConfiguration()
				.setAttributesForPrimitives(false);
		beanWriter.getBindingConfiguration().setMapIDs(false);
		beanWriter.enablePrettyPrint();

		Person person = new Person(1, "阿牛", "male", new Date());
		beanWriter.write(person);

		// 关闭输出流
		outputWriter.close();
	}
}import java.io.StringWriter;
import java.util.Date;

import org.apache.commons.betwixt.io.BeanWriter;

/**
* 将Java对象转换为XML,并获取其字符串
* betwixt功能强大,使用简单,是快速开发不二的选择。
 
BeanWriter相当于一个双向转换器工厂,但是这个工厂需要装配,并且它是非线程安全的。
 
BeanWriter有很多配置项,可以将对象的成员装配成xml元素的属性。也可以改写元素属性的名字。
默认情况下元素的名字与java成员的名字相同,根节点与java类名相同(不带包名)。
并且这些操作是双向可逆的。
 
BeanWriter还可以转换格式不规范的xml文档,比如节点无法有些不匹配,或者无法完全映射到对象上的xml,
这些都不会出错,并且当节点为null的时候,转换也不用做特殊处理,非常简单。
 
BeanWriter在将Java转换为xml时,Java对象可以是复杂对象,对象之中嵌套对象,
如果复杂对象的某个成员比如类型为另外一个对象为null时,还可以选择是否在生成xml的时候输出该节点。
如果期望输出,则输出一个对应复杂对象成员的子元素,里面的元素值全为空。
*/ 
public class WriteStringExampleApp {
	public static final void main(String[] args) throws Exception {
		String reslutXml;

		// 创建一个输出流,将用来输出Java转换的XML文件
		StringWriter outputWriter = new StringWriter();

		// 输出XML的文件头
		outputWriter.write("<?xml version='1.0' ?>");

		// 创建一个BeanWriter实例,并将BeanWriter的输出重定向到指定的输出流
		BeanWriter beanWriter = new BeanWriter(outputWriter);

		// 配置BeanWriter对象
		beanWriter.getXMLIntrospector().getConfiguration()
				.setAttributesForPrimitives(false);
		//第一行禁止写入ID
		beanWriter.getBindingConfiguration().setMapIDs(false);
		//第二行允许格式化输出
		beanWriter.enablePrettyPrint();

		Person person = new Person(1, "阿牛", "male", new Date());
		beanWriter.write(person);

		reslutXml = outputWriter.toString();

		// 关闭输出流
		outputWriter.close();

		// 控制台输出转换结果的字符串
		System.out.println(reslutXml);
	}
} 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics