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

时间:2014-11-01 20:37:03

标签: java xml binding jaxb

我需要使用JAXB将我的XML代码段映射到Java类,但是有一个棘手的情况。我有以下XML:

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

并需要将其映射到以下类

public class Person {

   private String firstName;
   private String lastName;
}

你能不能帮我弄清楚JAXB注释是否可行?

2 个答案:

答案 0 :(得分:3)

您可以使用MOXy执行此操作,请参阅@XmlPath

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

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

相关问题:

答案 1 :(得分:1)

您可以采用以下方法,但需要为Name创建一个单独的类:

@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;
   ...
}