发布时间:2019-05-08作者:laosun阅读(2092)
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']
版权属于: 技术客
原文地址: https://www.sunjs.com/article/detail/0aa43375c6e84b81ac4c4e26a151d3f5.html
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。