WEB开发网
开发学院软件开发Java 使用 XStream 在 JavaBean 与 XML/JSON 之间相互转... 阅读

使用 XStream 在 JavaBean 与 XML/JSON 之间相互转换

 2009-09-23 00:00:00 来源:WEB开发网   
核心提示: 3. XML -> JavaBean01.publicstaticvoidmain(String[]args){02.03.XStreamxstream=newXStream(newDomDriver());04.05.//设置了这个别名才能识别下面xml中的product节点,否则要用类

3. XML -> JavaBean

01.public static void main(String[] args) {
02.         
03.    XStream xstream = new XStream(new DomDriver());
04.     
05.    //设置了这个别名才能识别下面 xml 中的 product 节点,否则要用类全限名称
06.    xstream.alias("product", Product.class);
07.    String xml = "<product><prodId>1001</prodId><prodName>电脑" +
08.            "</prodName><prodPrice>4000.0</prodPrice></product>";
09.    Product prod = (Product)xstream.fromXML(xml);
10.    System.out.println(prod.getProdName());
11.}

执行上面的程序,能够输出产品名称“电脑”来,说明,由 XML 描述创建对象是成功的。相对于生成 XML 用的是 toXML(),通过 XML 构建对象用的方法是 fromXML(),同样要留意它的其他重载方法:

Object fromXML(InputStream input);
Object fromXML(InputStream xml, Object root);
Object fromXML(Reader xml);
Object fromXML(Reader xml, Object root);
Object fromXML(String xml);
Object fromXML(String xml, Object root);

它们能从不同的输入源,可指定根节点来构建对象。

4. JSON -> JavaBean

01.public static void main(String[] args) {
02.    // 这里不能用 JsonHierarchicalStreamDriver 了,它只能用于 JavaBean->JSON
03.    XStream xstream = new XStream(new JettisonMappedXmlDriver());
04. 
05.    // 设置了这个别名才能识别下面 xml 中的 product 节点,否则要用类全限名称
06.    xstream.alias("product", Product.class);
07.    String json = "{product:{prodId: 1001,prodName: '电脑', prodPrice: 4000.0}}";
08.    Product prod = (Product) xstream.fromXML(json);
09.    System.out.println(prod.getProdName());
10.}

可以看到也输出了“电脑”,说明工作正常。注意这里只能用 JettisonMappedXmlDriver。

相比于 JavaBean 到 XML/JSON 的转换,下面两个例子要简单多了,JavaBean 未涉及到关联关系。复杂的 XStream 也做得到,就看前两个例子,XStream 能够把复杂的 JavaBean 生成 XML/JSON,它也有这个能耐把生成的东西还原回去的。而且 XStream 在由 XML/JSON 生成 JavaBean 时不依赖于 setter 方法和构造方法的。

我们在实际中使用 XStream 时应该还会对它进行细究,或作进一步的扩展,如把某个 JavaBean 属性生成 XML 时作为另一属性生成的 XML 节点的属性,而不是子节点;或加入自己的 Converter、甚至是自己的 DomDriver、JsonDriver 等等。

上一页  1 2 3 4 5 6 

Tags:使用 XStream JavaBean

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接