首页 > 解决方案 > 简单的 XML 注释问题

问题描述

我正在使用 Retrofit 来解析来自服务器的响应,但我看不到我应该使用哪些注释来解决这个问题。我什至提到了这个。正确的方法应该是什么。

以下是我来自 Retrofit 的 onFailure 日志。

failurejava.lang.RuntimeException:org.simpleframework.xml.core.ElementException:元素'route'在第-1行的类 drish.com.dsfaallstars.updatefromserver.model.Routes 中没有匹配项 null

我收到的 XML:

<routes>
    <route>
        <id>20</id>
        <name>Barnala</name>
        <update>false</update>
    </route>
    <route>
        <id>15</id>
        <name>Kapurthala</name>
        <update>false</update>
    </route>
    <route>
        <id>14</id>
        <name>Nakodar</name>
        <update>false</update>
    </route>
</routes>

public class Routes {

  @Root
  @ElementList
  private List<Route> routes;
}

@Root(name = "route")
 public class Route{

    @Element(required = false)
    private String id;

    @Element(required = false)
    private String update;

    @Element(required = false)
    private String name;

    public String getId ()
    {
      return id;
    }

    public void setId (String id)
    {
      this.id = id;
    }

    public String getUpdate ()
    {
      return update;
    }

    public void setUpdate (String update)
    {
      this.update = update;
    }

    public String getName ()
    {
      return name;
    }

    public void setName (String name)
    {
      this.name = name;
    }
  }

标签: javaandroidannotationsretrofit2simple-framework

解决方案


@Element(name = "routes")
@Order(elements = "route")
public class Routes {

  @ElementList(entry = "route",inline = true)
  private List<RoutePojo> route;

  @Override
  public String toString() {
    return "Routes{" +
        "route=" + route +
        '}';
  }
}



public class RoutePojo{

    @Element(required = false)
    private String id;

    @Element(required = false)
    private String update;

    @Element(required = false)
    private String name;

    public String getId ()
    {
      return id;
    }

    public void setId (String id)
    {
      this.id = id;
    }

    public String getUpdate ()
    {
      return update;
    }

    public void setUpdate (String update)
    {
      this.update = update;
    }

    public String getName ()
    {
      return name;
    }

    public void setName (String name)
    {
      this.name = name;
    }

  @Override
  public String toString() {
    return "RoutePojo{" +
        "id='" + id + '\'' +
        ", update='" + update + '\'' +
        ", name='" + name + '\'' +
        '}';
  }
}

推荐阅读