我希望避免java代码中的数据重复,但结果xml必须有这种重复。
这样的java代码有可能吗
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Parent {
@XmlElementWrapper(name = "children")
@XmlElement(name = "child")
List<Child> children;
@XmlPath("children/*/surname/text()") //dosn't work
String surname;
}
public class Child {
String name;
}
得到
<parent>
<children>
<child>
<name>Bob</name>
<surname>FromParent</surname>
</child>
<child>
<name>Sara</name>
<surname>FromParent</surname>
</child>
</children>
</parent>
1条答案
按热度按时间2mbi3lxu1#
您正在使用一些来自(不推荐使用的)jaxb的注解,所以我猜您是在询问java/xml绑定。我不知道是什么
@XmlPath
应该是的,但是,我猜是你编造的。在任何情况下,在xml绑定中,每个类都Map到一个元素类型,其每个字段Map到该元素类型的属性或子元素。不能Map到嵌套更深的节点,尤其不能Map到非唯一节点。
所以不,你的要求没有得到支持,也没有多大意义。考虑一下:如果java试图反序列化
<parent>
有不同性格的孩子<surname>
S如果<surname>
只属于<parent>
,就像在类中一样,这就是它在xml中的位置。如果它是每个人的财产<child>
,则它应该对应于类的属性Child
.可能这应该是每个人的独立财产:作为一个现实世界的例子,我母亲的姓氏与我不同,如果我女儿结婚,她可能会用不同的姓氏。类似的情况很可能适用于非结构性家族性的类似情况。