package commons; 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 TestBetwixt { public static void main(String[] args) throws IOException, SAXException{ /**********************************************bean转化Xml*******************************************************/ // 先创建一个StringWriter,我们将把它写入为一个字符串 StringWriter outputWriter = new StringWriter(); // Betwixt在这里仅仅是将Bean写入为一个片断 // 所以如果要想完整的XML内容,我们应该写入头格式 outputWriter.write("<?xml version='1.0' encoding='UTF-8' ?>\n"); // 再创建一个BeanWriter,写入我们的outputWriter BeanWriter beanWriter = new BeanWriter(outputWriter); // 配置beanWriter beanWriter.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false); beanWriter.getBindingConfiguration().setMapIDs(false); beanWriter.enablePrettyPrint(); // 如果这个地方不传入XML的根节点名,Betwixt将自己猜测是什么 // 但是让我们将例子Bean名作为根节点吧 try { beanWriter.write("user", new User("csc", 21)); } catch (IOException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IntrospectionException e) { e.printStackTrace(); }finally{ //输出结果 System.out.println(outputWriter.toString()); // Betwixt写的是片断而不是一个文档,所以不要自动的关闭掉writers或者streams, //但这里仅仅是一个例子,不会做更多事情,所以可以关掉 try { outputWriter.close(); } catch (IOException e) { e.printStackTrace(); } } /**********************************************bean转化Xml*******************************************************/ /**********************************************Xml转化bean*******************************************************/ // 先创建一个XML,由于这里仅是作为例子,所以我们硬编码了一段XML内容 StringReader xmlReader = new StringReader("<?xml version='1.0' encoding='UTF-8' ?><user><age>21</age><name>csc</name></user>"); // 在创建一个BeanReader BeanReader beanReader = new BeanReader(); //配置reader beanReader.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false); beanReader.getBindingConfiguration().setMapIDs(false); //注册beans,以便betwixt知道XML将要被转化为一个什么Bean try { beanReader.registerBeanClass("user", User.class); //现在我们对XML进行解析 User user = (User) beanReader.parse(xmlReader); //输出结果 System.out.println(user); } catch (IntrospectionException e) { e.printStackTrace(); } /**********************************************Xml转化bean*******************************************************/ } }
运行结果
<?xml version='1.0' encoding='UTF-8' ?>
<user>
<age>21</age>
<name>csc</name>
</user>
User [name=csc, age=21]