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

SimpleXML Converter解析XML触发PersistenceException构造器不匹配如何解决

SimpleXML Constructor匹配异常解决方法

报错信息

org.simpleframework.xml.core.PersistenceException: Constructor not matched for class com.example.nbrbcurrency.retrofit.models.Food

问题定位

  • Kotlin数据类搭配@JvmOverloads注解时,只有给所有构造参数设置默认值,才会生成无参构造方法。你当前的Food、BreakFastMenu类都没有给参数设置默认值,SimpleXML框架无法找到可调用的无参构造方法实例化类对象,因此抛出匹配异常。
  • 集合字段的@ElementList注解缺少entry参数,无法明确和XML中的food子节点做对应,也会增加解析匹配失败的概率。

修复代码

修改BreakFastMenu类

import org.simpleframework.xml.ElementList
import org.simpleframework.xml.Root

@Root(strict = false, name = "breakfast_menu")
data class BreakFastMenu @JvmOverloads constructor(
    @field:ElementList(inline = true, entry = "food")
    var foodList : List<Food> = emptyList()
)

修改Food类

import org.simpleframework.xml.Element
import org.simpleframework.xml.Root

@Root(name = "food", strict = false)
data class Food @JvmOverloads constructor(
    @field:Element(name = "name")
    var name: String = "",

    @field:Element(name = "price")
    var price: String = "",

    @field:Element(name = "description")
    var description: String = "",

    @field:Element(name = "calories")
    var calories: String = ""
)

可选校验项

  • 确认Retrofit初始化时已正确注入SimpleXMLConverter工厂
  • 如果XML结构存在非必填字段,给对应字段的@Element注解添加required = false参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:06:05