В настоящее время у меня есть xml, который выглядит так:

<Person>
  <ID>e5b160d07</ID>
  <Source>
    <Name>HardImpact</Name>
  </Source>
</Person>

А мой JaxB выглядит так:

@XmlRootElement(name="Person")
public class PersonDTO {
  private String id;
  private Source source;

  @XmlElement(name="ID")
  public void setId(String id) {...}


  @XmlElement(name="Source")
  public void setSource(Source source) {...}

}

@XmlRootElement(name="Source")
class Source {
  private String name;

  @XmlElement(name="Name", namespace=DTOConstants.cmnv3)
  public void setName(String name) {...}
}

Есть ли лучший способ использовать аннотации, чтобы избавиться от необходимости иметь класс Source? Изменение входящего XML не вариант.

2
Pete B. 28 Май 2015 в 20:15

1 ответ

Лучший ответ

AFAIK Каждый родительский тег должен быть объектом для хранения дочерних тегов в качестве атрибутов.

Итак, ваш подход - это чистый, распространенный и предпочтительный способ его реализации. Нет тегов, которые автоматически создают исходный класс,

Но

Вы можете использовать @XMLAnyElement для сопоставления тега Source с типом объекта. Дополнительные сведения об этом теге см. в этом примере.

1
K139 28 Май 2015 в 21:14