java - 内联列表中具有属性的 SimpleXML 单深度元素

标签 java xml simple-framework

我要解析下面的XML

<entry key="9" type="9">
  <value>
    <amount stake="10">50000000</amount>
    <amount stake="1">5000000</amount>
    <winner>0.0</winner>
    <description>9 Correct Numbers</description>
  </value>
</entry>

我尝试通过以下类(class)实现这一目标:

@Root(name="entry")
public class OddsEntryXMLObject {

    @Attribute(name="key")
    private String iKey;

    @Attribute(name="jackpot", required=false)
    private String iJackpot;

    @Attribute(name="type", required=false)
    private String iType;

    @Element(name="value")
    private OddsValueXMLObject iOddsValueXMLObject;
}

public class OddsAmountXMLObject {

    @Element(name="amount")
    private String iAmount;

    @Attribute(name="stake", required=false)
    private String iStake;
}

但是我得到以下异常:

java.lang.RuntimeException: org.simpleframework.xml.core.ValueRequiredException: Unable to satisfy @org.simpleframework.xml.Element(data=false, name=amount, required=true, type=void) on field 'iAmount' private java.lang.String OddsAmountXMLObject.iAmount for class OddsAmountXMLObject at line 1

有人知道如何解析吗?

最佳答案

提供的代码中没有OddsValueXMLObject 类的声明。 假设声明如我所想, 错误消息基本上意味着它需要 amount 元素中的 amount 元素, 像这样:

<amount>
    <amount></amount>
</amount>

当然,在您的 XML 中没有类似的东西。 你可以用这个来解析它:

@Root(name="entry")
public class OddsEntryXMLObject{
    @Attribute(name="key")
    private String key;

    @Attribute(name="jackpot", required=false)
    private String jackpot;

    @Attribute(name="type", required=false)
    private String type;

    @Element(name="value")
    private OddsValueXMLObject value;
}

@Root(name="value")
public class OddsValueXMLObject{
    @ElementList(inline=true)
    private java.util.List<OddsAmountXMLObject> amounts;

    @Element(name="winner", required=false)
    private String winner;

    @Element(name="description", required=false)
    private String description;
}

@Root(name="amount")
public class OddsAmountXMLObject{
    @Attribute(name="stake", required=false)
    private String stake; 

    @Text
    private String text;
}

关于java - 内联列表中具有属性的 SimpleXML 单深度元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42116592/

相关文章:

c# - xml中的可扩展区域

java - Android Xml 处理程序仅保留我的 xml 文件中的最后一个对象

java - 使用 simpleframework 构建了一个类 "TimetableData",它可以很好地保存为 xml,但是当我尝试在代码中读取它时,它会抛出 PersistenceException

java - 通过套接字发送图像流问题 - Android

C# 将内部 XML 反序列化为字符串

java - Parceler 和 SimpleXml 如 Parceler 的自述文件所述

Java SimpleXml 解析@ElementList

java - java.util.Date 是否使用 TimeZone?

java - 如何使用 vavr 仅记录特定异常

java - 将字符串中的字符乘以数字