简单XML:元素声明两次

3

我尝试使用 SimpleXML 库解析 xml,但是遇到了以下异常;我已经将水定义为列表,但不知道为什么会出现此问题。可能是我漏看了一些基础内容,但我就是找不到它。我的操作基本上是按照http://simple.sourceforge.net/download/stream/doc/tutorial/tutorial.php#list示例的模式进行的。

另外,这里在 StackOverflow 上有一个类似的问题,但这不是同一个情况,实际上与 ElementLists 无关。在我的情况下,我绝对需要一个 ElementList,因此我认为元素的多次出现实际上应该是可以的。

错误日志:

Error parsing xml.
        org.simpleframework.xml.core.PersistenceException: Element 'gewaessereintrag' declared twice at line 9
        at org.simpleframework.xml.core.Variable$Adapter.read(Variable.java:456)
....

XML:

<?xml version="1.0" ?>
<gewaesser>
    <returncode>0</returncode>
    <gewaessereintrag>
        <id>1</id>
        <name><![CDATA[Entry1]]></name>
        <info><![CDATA[Info1.]]></info>
    </gewaessereintrag>
    <gewaessereintrag>
        <id>2</id>
        <name><![CDATA[Entry2]]></name>
        <info><![CDATA[Info2.]]></info>
    </gewaessereintrag>
</gewaesser>

水域列表(处理<gewaesser>):

@Root(name = "gewaesser")
public class WaterList {

    @ElementList(type = Water.class, name = "gewaessereintrag")
    private List<Water> waters;

    @Element(name = "returncode")
    private String returncode;

    public List<Water> getWaters() {
        return waters;
    }
}

水(处理<gewaessereintrag>):

@Root(name = "gewaessereintrag")
public class Water {

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

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

    @Element(required = false, name = "id", type = Long.class)
    private Long id;

}
1个回答

4

我刚刚自己找到了答案,但希望这对其他人也有所帮助:

我忘记声明 "inline = true"。

@ElementList(type = Water.class, name = "gewaessereintrag", inline = true)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接