Apache Betwixt 包 XML与实体bean互转实例demo

发布时间:2019-05-08作者:laosun阅读(418)

Apache

    Person.java

    /**
     * 新创建一个普通Java Bean,用来作为被克隆的对象
     * @author sun
     */
    public class Person {
    	private String name;
    	private String email;
    	private Integer age;
    
    	public Person() {
    		
    	}
    
    	public Person(String name, String email, Integer age) {
    		super();
    		this.name = name;
    		this.email = email;
    		this.age = age;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public String getEmail() {
    		return email;
    	}
    
    	public void setEmail(String email) {
    		this.email = email;
    	}
    
    	public Integer getAge() {
    		return age;
    	}
    
    	public void setAge(Integer age) {
    		this.age = age;
    	}
    
    	public String toString() {
    		return "Person[name='" + name + "',email='" + email + "',age='" + age + "']";
    	}
    
    }

    BetwixtTest.java

    import java.beans.IntrospectionException;
    import java.io.IOException;
    import java.io.StringReader;
    import java.io.StringWriter;
    
    import org.apache.commons.betwixt.io.BeanReader;
    import org.apache.commons.betwixt.io.BeanWriter;
    import org.xml.sax.SAXException;  
    
    public class BetwixtTest {
    	
    //	<dependency>
    //	    <groupId>commons-betwixt</groupId>
    //	    <artifactId>commons-betwixt</artifactId>
    //	    <version>0.8</version>
    //	</dependency>
    	
    	/**
    	 * 创建一个例子Bean,并将它转化为XML.
    	 */
    	public static void main(String[] args) throws Exception {
    		System.out.println("bean 转 xml:");
    		beanToXml();
    		System.out.println("xml 转 bean:");
    		xmlToBean();
    	}
    
    	/**
    	 * bean 转 xml
    	 * @throws IOException
    	 * @throws SAXException
    	 * @throws IntrospectionException
    	 */
    	private static void beanToXml() throws IOException, SAXException, IntrospectionException {
    		// 先创建一个StringWriter,我们将把它写入为一个字符串
    		StringWriter outputWriter = new StringWriter();
    		// Betwixt在这里仅仅是将Bean写入为一个片断
    		// 所以如果要想完整的XML内容,我们应该写入头格式
    		outputWriter.write("<?xml version='1.0' encoding='UTF-8'?>");
    		// 创建一个BeanWriter,其将写入到我们预备的stream中
    		BeanWriter beanWriter = new BeanWriter(outputWriter);
    		// 配置betwixt
    		// 更多详情请参考java docs 或最新的文档
    		beanWriter.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false);
    		beanWriter.getBindingConfiguration().setMapIDs(false);
    		beanWriter.enablePrettyPrint();
    		// 如果这个地方不传入XML的根节点名,Betwixt将自己猜测是什么
    		// 但是让我们将例子Bean名作为根节点吧
    		Person p = new Person("MMM", "mmm@163.com", 21);
    		beanWriter.write("person", p);
    		// 输出结果
    		System.out.println(outputWriter.toString());
    		// Betwixt写的是片断而不是一个文档,所以不要自动的关闭掉writers或者streams,
    		// 但这里仅仅是一个例子,不会做更多事情,所以可以关掉
    		outputWriter.close();
    	}
    	
    	/**
    	 * xml 转 bean
    	 * @throws IOException
    	 * @throws SAXException
    	 * @throws IntrospectionException
    	 */
    	private static void xmlToBean() throws IOException, SAXException, IntrospectionException {
    		// 先创建一个XML,由于这里仅是作为例子,所以我们硬编码了一段XML内容  
    		 StringReader xmlReader = new StringReader(  
    		 "<?xml version='1.0' encoding='UTF-8' ?> <person><age>21</age><email>mmm@163.com</email><name>MMM</name></person>");  
    		 //创建BeanReader  
    		 BeanReader beanReader = new BeanReader();  
    		 //配置reader  
    		 beanReader.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false);  
    		 beanReader.getBindingConfiguration().setMapIDs(false);  
    		 //注册beans,以便betwixt知道XML将要被转化为一个什么Bean  
    		 beanReader.registerBeanClass("person", Person.class);  
    		 //现在我们对XML进行解析  
    		 Person person = (Person) beanReader.parse(xmlReader);  
    		 //输出结果  
    		 System.out.println(person);  
    	}
    	
    }


    控制台打印:

    bean 转 xml:
    <?xml version='1.0' encoding='UTF-8'?>  <person>
        <age>21</age>
        <email>mmm@163.com</email>
        <name>MMM</name>
      </person>
    
    xml 转 bean:
    Person[name='MMM',email='mmm@163.com',age='21']


1 +1

版权声明

 Java  源码  开源  工具  apache

 请文明留言

0 条评论