如何使用JAXB将复杂的XML元素映射到Java类属性

如何使用JAXB将复杂的XML元素映射到Java类属性,java,xml,binding,jaxb,Java,Xml,Binding,Jaxb,我需要使用JAXB将XML片段映射到Java类,但有一个棘手的例子。我有以下XML: <person> <name part="first">Richard</name> <name part="last">Brooks</name> </person> 您能帮我找出JAXB注释使之成为可能吗?这里是一种您可以采取的方法,但需要您为名称创建一个单独的类: @XmlRootElement public class P

我需要使用JAXB将XML片段映射到Java类,但有一个棘手的例子。我有以下XML:

<person>
  <name part="first">Richard</name>
  <name part="last">Brooks</name>
</person>

您能帮我找出JAXB注释使之成为可能吗?

这里是一种您可以采取的方法,但需要您为名称创建一个单独的类:

@XmlRootElement
public class Person {
    @XmlElement(name="name")
    private List<Name> names;
    ...
}

public class Name {
   @XmlAttribute
   private String part; //would be set to "first" or "last"

   @XmlValue
   private String nameValue;
   ...
}
@XmlRootElement
公共阶层人士{
@xmlement(name=“name”)
私人名单名称;
...
}
公共类名{
@XmlAttribute
私有字符串部分;//将设置为“first”或“last”
@XmlValue
私有字符串名称值;
...
}
您可以使用,请参阅

相关问题:


同样,这也不是OP想要的。不,还没有,但这不是你可以开始做的事情吗?XPath中可能缺少text()。
@XmlRootElement
public class Person {
    @XmlElement(name="name")
    private List<Name> names;
    ...
}

public class Name {
   @XmlAttribute
   private String part; //would be set to "first" or "last"

   @XmlValue
   private String nameValue;
   ...
}
@XmlPath("name[@part='first']/text()")
private String firstName;

@XmlPath("name[@part='last']/text()")
private String lastName;