Android xml转object之XStream的坑!坑!坑!

本文介绍了在Android开发中使用XStream解析XML时遇到的四个主要问题:如何集成XStream,处理数组类型的字段,创建对应实体类,以及正确设置Converter的解析顺序。开发者需要从官方下载最新jar包,使用@XStreamImplicit注解处理数组,为每个XML标签创建单独的类,并确保在Converter中getAttribute()在getValue()之前调用,以避免各种异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

牛逼的领导指出返回数据要xml格式,弱弱的安卓程序猿也无力回天啊!只能硬着头皮干!

第一步:xml解析有没有类似Gson/fastjson类似的工具呢?找了半天终于找到了今天的主角XStream。

先贴出要解析的xml

<?xml version="1.0" encoding="UTF-8" ?>
<name title="三角波">
    <Wave tag="V1" seq="0">
        <Samples name="张三"> 0X0000, 0X0000, 0X0000 </Samples>
        <WaveAnnotations/>
    </Wave>
    <Wave tag="V2" seq="0">
        <Samples name="李四"> 0X0000, 0X0000, 0X0000 </Samples>
        <WaveAnnotations/>
    </Wave>
</name>

对应的实体类: TestModel.java


import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamImplicit;

import java.util.List;

@XStreamAlias("name")
public class TestModel {
    @XStreamAsAttribute
    private String title;
    /**
     * tag : V1
     * seq : 0
     * Samples : 0X0000, 0X0000, 0X0000
     * WaveAnnotations :
     */
    @XStreamImplicit(itemFieldName = "Wave")
    private List<WaveBean> Wave;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public List<WaveBean> getWave() {
        return Wave;
    }

    public void setWave(List<WaveBean> Wave) {
        this.Wave = Wave;
    }

    @XStreamAlias("Wave")
    public static class WaveBean {
        @XStreamAsAttribute
        private String tag;
        @XStreamAsAttribute
        private int seq;
        @XStreamAsAttribute
        private SamplesBean Samples;
        @XStreamAsAttribute
        private WaveAnnotationsBean WaveAnnotations;

        public String getTag() {
            return tag;
        }

        public void setTag(String tag) {
            this.tag = tag;
        }

        public int getSeq() {
            return seq;
        }

        public void setSeq(int seq) {
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值