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 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)