fengfujie 2013-07-23 17:40
浏览 428
已采纳

xstream解析xml问题


2.0 - 2.0.3196.1747
true
1
Successful.
1374566330
15

上街区
7
中国
河南省
郑州市
113.313662
河南省郑州市上街区东方明珠
34.809508


滕州市
7
中国
山东省
枣庄市
117.176897
山东省枣庄市滕州市东方明珠
35.104039

这样的xml如何解析

我定义的
ats类中
private String version;
private String result;
private String code;
private String message;
private String timestamp;
private String total;
private List geocode;
这样的定义的

解析的时候geocode解析不出来。

谁能给我一个例子。

  • 写回答

1条回答 默认 最新

  • 随心TZ所欲 2013-07-23 18:16
    关注

    首先我想说,你的xml的结构不是很好。。。。。。
    当然了以上你的xml也是可以解析的,看下面的例子
    需要jar包 xstream-1.4.2.jar
    Ats.java
    package com.xulonghui.entity;

    import java.io.Serializable;
    import java.util.List;

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

    @XStreamAlias("ats")
    public class Ats implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = -2215367669576006438L;
    private String version;
    private boolean result;
    private Integer code;
    private String message;
    private long timestamp;
    private Integer total;
    
    @XStreamImplicit
    private List<GeoCode> geoCodes;
    
    public String getVersion() {
        return this.version;
    }
    
    public void setVersion(String version) {
        this.version = version;
    }
    
    public boolean isResult() {
        return this.result;
    }
    
    public void setResult(boolean result) {
        this.result = result;
    }
    
    public Integer getCode() {
        return this.code;
    }
    
    public void setCode(Integer code) {
        this.code = code;
    }
    
    public String getMessage() {
        return this.message;
    }
    
    public void setMessage(String message) {
        this.message = message;
    }
    
    public long getTimestamp() {
        return this.timestamp;
    }
    
    public void setTimestamp(long timestamp) {
        this.timestamp = timestamp;
    }
    
    public Integer getTotal() {
        return this.total;
    }
    
    public void setTotal(Integer total) {
        this.total = total;
    }
    
    public List<GeoCode> getGeoCodes() {
        return this.geoCodes;
    }
    
    public void setGeoCodes(List<GeoCode> geoCodes) {
        this.geoCodes = geoCodes;
    }
    

    }

    GeoCode.java
    package com.xulonghui.entity;

    import java.io.Serializable;

    import com.thoughtworks.xstream.annotations.XStreamAlias;

    @XStreamAlias("geocode")
    public class GeoCode implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = -6655251876533605578L;
    
    private String district;
    private Integer level;
    private String country;
    private String region;
    private String cityname;
    private String longitude;
    private String formattedaddress;
    private String latitude;
    
    @Override
    public String toString() {
        return "GeoCode [district=" + this.district + ", level=" + this.level + ", country=" + this.country
                + ", region=" + this.region + ", cityname=" + this.cityname + ", longitude=" + this.longitude
                + ", formattedaddress=" + this.formattedaddress + ", latitude=" + this.latitude + "]";
    }
    
    public String getDistrict() {
        return this.district;
    }
    
    public void setDistrict(String district) {
        this.district = district;
    }
    
    public Integer getLevel() {
        return this.level;
    }
    
    public void setLevel(Integer level) {
        this.level = level;
    }
    
    public String getCountry() {
        return this.country;
    }
    
    public void setCountry(String country) {
        this.country = country;
    }
    
    public String getRegion() {
        return this.region;
    }
    
    public void setRegion(String region) {
        this.region = region;
    }
    
    public String getCityname() {
        return this.cityname;
    }
    
    public void setCityname(String cityname) {
        this.cityname = cityname;
    }
    
    public String getLongitude() {
        return this.longitude;
    }
    
    public void setLongitude(String longitude) {
        this.longitude = longitude;
    }
    
    public String getFormattedaddress() {
        return this.formattedaddress;
    }
    
    public void setFormattedaddress(String formattedaddress) {
        this.formattedaddress = formattedaddress;
    }
    
    public String getLatitude() {
        return this.latitude;
    }
    
    public void setLatitude(String latitude) {
        this.latitude = latitude;
    }
    

    }

    Main.java
    package com.xulonghui.main;

    import java.io.File;

    import com.thoughtworks.xstream.XStream;
    import com.thoughtworks.xstream.io.xml.DomDriver;
    import com.xulonghui.entity.Ats;

    public class Main {
    public static void main(String[] args) {
    XStream xStream = new XStream(new DomDriver());
    xStream.setMode(XStream.NO_REFERENCES);
    xStream.autodetectAnnotations(true);
    xStream.alias("ats", Ats.class);

        Ats ats = (Ats) xStream.fromXML(new File("c://ats.xml"));
    
        System.out.println(ats.getGeoCodes());
    }
    

    }

    执行后的结果为:
    [GeoCode [district=上街区, level=7, country=中国, region=河南省, cityname=郑州市, longitude=113.313662, formattedaddress=河南省郑州市上街区东方明珠, latitude=34.809508], GeoCode [district=滕州市, level=7, country=中国, region=山东省, cityname=枣庄市, longitude=117.176897, formattedaddress=山东省枣庄市滕州市东方明珠, latitude=35.104039]]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B
  • ¥15 想问一下stata17中这段代码哪里有问题呀
  • ¥15 flink cdc无法实时同步mysql数据
  • ¥100 有人会搭建GPT-J-6B框架吗?有偿