You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Retrofit与Simple XML解析XML遇'route'元素匹配错误求方案

解决Retrofit结合Simple XML解析元素不匹配的问题

看来你遇到的问题是Simple XML没法把返回XML里的<route>元素正确映射到你的Routes类,核心原因是实体类的注解配置和XML结构不匹配,咱们来一步步修正:

问题分析

你的XML结构是根节点<routes>下直接包含多个<route>子元素,但你的Routes类里的@ElementList注解既没指定要匹配的元素名称,也没开启inline模式,导致Simple XML找不到对应的映射关系,才抛出了那个元素不匹配的异常。

修正后的实体类代码

Routes类(根节点映射)

@Root(name = "routes")
public class Routes {
    // inline=true表示<route>直接作为<routes>的子元素,无需额外包裹标签
    @ElementList(inline = true, name = "route")
    private List<Route> routes;

    // Getter和Setter
    public List<Route> getRoutes() {
        return routes;
    }

    public void setRoutes(List<Route> routes) {
        this.routes = routes;
    }
}

Route类(子元素映射)

你的Route类注解基本没问题,这里再确认一下写法:

@Root(name = "route")
public class Route {
    @Element(required = false)
    private String id;
    @Element(required = false)
    private String name;
    @Element(required = false)
    private String update;

    // Getter和Setter
    public String getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public String getUpdate() {
        return update;
    }

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

关键注解说明

  • @Root(name = "routes"):明确指定该类对应XML的根节点<routes>,让Simple XML能准确识别根元素。
  • @ElementList(inline = true, name = "route"):
    • inline=true:告诉Simple XML,列表里的每个<route>元素直接是根节点<routes>的子元素,不需要额外的外层包裹标签。
    • name="route":指定列表中的每个元素对应XML里的<route>标签,完美匹配你返回的XML结构。

额外检查

别忘了确保你的Retrofit实例配置了SimpleXmlConverterFactory,这样才能正确解析XML响应:

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("你的服务器基础URL")
    .addConverterFactory(SimpleXmlConverterFactory.create())
    .build();

内容的提问来源于stack exchange,提问作者ashishdhiman2007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:59:45