SimpleXML:元素声明两次

时间:2012-05-16 10:43:44

标签: java xml simple-framework

我尝试用SimpleXML lib解析xml,我得到以下异常;当我将水定义为清单时,无法弄清楚为什么它会抱怨。 可能是我忽视的一些非常基本的东西,但我找不到它。我几乎遵循http://simple.sourceforge.net/download/stream/doc/tutorial/tutorial.php#list

上给出的示例模式

btw:StackOverflow上有一个similar question,但这是一个不同的情况,实际上并没有处理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>

WaterList(处理<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 个答案:

答案 0 :(得分:4)

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

我忘了宣布“inline = true

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