我的班级结构如下:
@XmlRootElement(name = "storage")
@XmlType(propOrder = {
"entries"
})
@XmlAccessorType(XmlAccessType.FIELD)
public class A {
@XmlElement(name = "configuration")
private Set<ClassB> entries;
...
}
@XmlRootElement(name = "configuration")
@XmlType(propOrder = {
"name",
"entries"
})
@XmlAccessorType(XmlAccessType.FIELD)
public class B {
private String name;
@XmlElement(name = "configurationEntry")
private Set<ClassC> entries;
...
}
@XmlRootElement(name = "configurationEntry")
@XmlType(propOrder = {
"property1",
"property2",
"property3"
})
@XmlAccessorType(XmlAccessType.FIELD)
public class C {
private String property1;
private String property2;
private String property3;
...
}
当我使用 Jersey 制作 XML 时,当我尝试访问根容器(A 类)时得到以下输出。我不知道为什么有标签而不是标签。
<Bes>
<configuration>
<name>Name1</name>
<configurationEntry>
<property1>...</property1>
<property2>...</property2>
<property3>...</property2>
</configurationEntry>
<configurationEntry>
<property1>...</property1>
<property2>...</property2>
<property3>...</property2>
</configurationEntry>
</configuration>
<configuration>
<name>Name2</name>
<configurationEntry>
<property1>...</property1>
<property2>...</property2>
<property3>...</property2>
</configurationEntry>
<configurationEntry>
<property1>...</property1>
<property2>..</property2>
<property3>...</property2>
</configurationEntry>
</configuration>
</Bes>
当我尝试访问 ClassB 容器之一时,我得到以下信息。(与以前类似的问题),而不是我得到并且没有包含标签。
<Aes>
<configurationEntry>
<property1>...</property1>
<property2>...</property2>
<property3>...</property2>
</configurationEntry>
<configurationEntry>
<property1>...</property1>
<property2>...</property2>
<property3>...</property2>
</configurationEntry>
<Aes>
唯一能按预期工作的是最低级别的 C 类
<configurationEntry>
<property1>...</property1>
<property2>...</property2>
<property3>...</property2>
</configurationEntry>
为了清楚起见,我想要的输出如下:
访问存储(A 类)容器时:
<storage>
<configuration>
<name>Name1</name>
<entries>
<configurationEntry>
<property1>...</property1>
<property2>...</property2>
<property3>...</property2>
</configurationEntry>
<configurationEntry>
<property1>...</property1>
<property2>...</property2>
<property3>...</property2>
</configurationEntry>
</entries>
</configuration>
<configuration>
<name>Name2</name>
<entries>
<configurationEntry>
<property1>...</property1>
<property2>...</property2>
<property3>...</property2>
</configurationEntry>
<configurationEntry>
<property1>...</property1>
<property2>..</property2>
<property3>...</property2>
</configurationEntry>
</entries>
</configuration>
</storage>
访问二级容器 B 类时,我想要以下内容:
<configuration>
<name>Name1</name>
<entries>
<configurationEntry>
<property1>...</property1>
<property2>...</property2>
<property3>...</property2>
</configurationEntry>
<configurationEntry>
<property1>...</property1>
<property2>...</property2>
<property3>...</property2>
</configurationEntry>
</entries>
</configuration>
C类是可以的:
<configurationEntry>
<property1>...</property1>
<property2>...</property2>
<property3>...</property2>
</configurationEntry>