使用SimpleXml解析xml数据<三>

使用SimpleXml解析xml数据<三>

前两篇博客介绍了一些基本xml解析。
不过在使用过程中我们有可能也会遇到比较变态的xml,这篇博客主要讲讲怎么解析稍微不正常一点的xml。

第一种:

<Bean xmlns:soap="http://www.w3.org/2001/XMLSchema-instance">
    <soap:value>123</soap:value>
</Bean>

这种相对还是比较简单的,在Element上面配置一下namespace的prefix属性的值就可以了。
对应的Bean.java 如下:

@Root
public class Bean {
    @Namespace(prefix = "soap")
    @Element
    private int value;

    public int getValue() {
        return value;
    }

    public void setValue(int value) {
        this.value = value;
    }

    @Override
    public String toString() {
        return "Bean{" +
                "value=" + value +
                '}';
    }
}

通过Element注解的name属性我们能够把原本xml中的名字,在java文件中重新命名。

第二种:

<Bean xmlns:im="http://www.w3.org/2001/XMLSchema-instance">
    <im:image height="170">111</im:image>
</Bean>

首先呢,这种和第一种是很类似的,但多了一个height属性。

这种应该怎么解析呢,其实也很简单,这种的话,每一个<im:image height="170">111</im:image>相当于一个对象。
height是attribute。
有了这个思路,解析起来就简单很多了吧。
对应Bean.java如下:

@Root
public class Bean {
    @Namespace( prefix = "im")
    @Element(name = "image")
    private Image image;

    public Image getImage() {
        return image;
    }

    public void setImage(Image image) {
        this.image = image;
    }

    @Override
    public String toString() {
        return "Bean{" +
                "image=" + image +
                '}';
    }

    static class Image{
        @Attribute
        private int height;

        @Text()
        private int value;

        public int getHeight() {
            return height;
        }

        public void setHeight(int height) {
            this.height = height;
        }

        public int getValue() {
            return value;
        }

        public void setValue(int value) {
            this.value = value;
        }

        @Override
        public String toString() {
            return "Image{" +
                    "height=" + height +
                    ", value=" + value +
                    '}';
        }
    }
}

第三种:

<Bean xmlns:im="http://www.w3.org/2001/XMLSchema-instance">
    <xx im:image="170">111</xx>
</Bean>

如果你看完了前两种,这种相信应该难不倒你了,只是把prefix转移到Attribute上面而已,就不多说了,直接贴代码:

@Root
public class Bean {
    @Element(name = "xx")
    private XX xxx;

    public XX getXxx() {
        return xxx;
    }

    public void setXxx(XX xxx) {
        this.xxx = xxx;
    }

    @Override
    public String toString() {
        return "Bean{" +
                "xxx=" + xxx +
                '}';
    }

    static class XX{
        @Namespace( prefix = "im")
        @Attribute(name = "image")
        private int image;

        @Text()
        private int value;

        public int getImage() {
            return image;
        }

        public void setImage(int image) {
            this.image = image;
        }

        public int getValue() {
            return value;
        }

        public void setValue(int value) {
            this.value = value;
        }

        @Override
        public String toString() {
            return "XX{" +
                    "xxx=" + image +
                    ", value=" + value +
                    '}';
        }
    }
}

解析结果:Bean{xxx=XX{xxx=170, value=111}}

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值