conversion between xml and object using xstream


  offical site said, but it does not make it clearly. especial parse xml with attributes. here is my test according to docs from offical websites.

public class XstreamTest {
    
    public static void main(String[] args) throws Exception {
        //convertXml2();
        convertObject2();

    }
    
    public static void convertXml1(){
        RendezvousMessage1 message = new RendezvousMessage1(1, false, "part1","part2","part3");
        XStream xStream = new XStream(new DomDriver());
        xStream.processAnnotations(RendezvousMessage1.class);
        System.out.println("message1 "+xStream.toXML(message));
    }
    public static String convertXml2(){
        RendezvousMessage2 message = new RendezvousMessage2(1, false, "part1","part2","part3");
        XStream xStream = new XStream(new DomDriver());
        xStream.processAnnotations(RendezvousMessage2.class);
        System.out.println("message2 "+xStream.toXML(message));
        String xmlString = xStream.toXML(message);
        return xmlString;
    }
    
    public static void convertObject2(){
        
        XStream xStream = new XStream(new DomDriver());
        xStream.processAnnotations(RendezvousMessage2.class);
        System.out.println("convertObject2 "+xStream.fromXML(convertXml2()));
    }
    

}

@XStreamAlias("message")
class RendezvousMessage1 {

    @XStreamAlias("type")
       @XStreamAsAttribute
    private int messageType;

    @XStreamImplicit(itemFieldName="part")
    private List<String> content;
    
       @XStreamAsAttribute
    @XStreamConverter(value=BooleanConverter.class, booleans={false}, strings={"yes", "no"})
    private boolean important;


    public RendezvousMessage1(int messageType, boolean important, String... content) {
        this.messageType = messageType;
        this.important = important;
        this.content = Arrays.asList(content);
    }
}
@XStreamAlias("message")
class RendezvousMessage2 {

       @XStreamAsAttribute
    private int type;

    @XStreamImplicit(itemFieldName="part")
    private List<String> content;
    
       @XStreamAsAttribute
    @XStreamConverter(value=BooleanConverter.class, booleans={false}, strings={"yes", "no"})
    private boolean important;


    public RendezvousMessage2(int messageType, boolean important, String... content) {
        this.type = messageType;
        this.important = important;
        this.content = Arrays.asList(content);
    }
    @Override
    public String toString() {
        return "type "+type+" content "+content;
    }
}

  through my test , it work well.

优质内容筛选与推荐>>
1、Windows8.1应用再出发(WinJS)-创建一个简单项目
2、不用ps都可以获得双色调图片
3、PHP中HTTP防盗链技术
4、Linux下用Clion编写及调用共享库的实践
5、不均衡数据怎么破?对付它的七种武器!


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号