将字段从父节点添加到每个子节点

fjnneemd  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(331)

我希望避免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>
2mbi3lxu

2mbi3lxu1#

您正在使用一些来自(不推荐使用的)jaxb的注解,所以我猜您是在询问java/xml绑定。我不知道是什么 @XmlPath 应该是的,但是,我猜是你编造的。
在任何情况下,在xml绑定中,每个类都Map到一个元素类型,其每个字段Map到该元素类型的属性或子元素。不能Map到嵌套更深的节点,尤其不能Map到非唯一节点。
所以不,你的要求没有得到支持,也没有多大意义。考虑一下:如果java试图反序列化 <parent> 有不同性格的孩子 <surname> S如果 <surname> 只属于 <parent> ,就像在类中一样,这就是它在xml中的位置。如果它是每个人的财产 <child> ,则它应该对应于类的属性 Child .
可能这应该是每个人的独立财产:作为一个现实世界的例子,我母亲的姓氏与我不同,如果我女儿结婚,她可能会用不同的姓氏。类似的情况很可能适用于非结构性家族性的类似情况。

相关问题