Анализ JAXB занял атрибуты xml - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь разобрать следующую часть XML.Есть два тега "location".А второй принял атрибуты.Но я не могу установить JAXB правильно, второй класс не устанавливает свойства.Есть также способ упростить код, используя lombook, но сохраняя поля как частные.

<location>
     <name>London</name>
     <type/>
     <country>GB</country>
     <timezone/>
     <location altitude="0" latitude="51.5085" longitude="-0.1258" geobase="geonames" geobaseid="2643743"/>
</location>

Вот внешний класс Location:

@Data
@XmlRootElement(name = "location")
class Location implements Serializable {
  private String name;
  private String type;
  private String country;
  private String timezone;

  private GeoLocation geoLocation;

  @XmlElement(name = "location")
  public void setGeoLocation(GeoLocation geoLocation) {
      this.geoLocation = geoLocation;
  }
}

И второй класс:

@Data
@XmlRootElement(name = "location")
class GeoLocation { //Ineer location

  private String _altitude;
  private double _latitude;
  private double _longitude;
  private String _geobase;
  private int _geobaseid;

  @XmlElement(name = "altitude")
  public void set_altitude(String _altitude) {
      this._altitude = _altitude;
  }

  @XmlElement(name = "latitude")
  public void set_latitude(double _latitude) {
      this._latitude = _latitude;
  }

  @XmlElement(name = "longitude")
  public void set_longitude(double _longitude) {
      this._longitude = _longitude;
  }

  @XmlElement(name = "geobase")
  public void set_geobase(String _geobase) {
      this._geobase = _geobase;
  }

  @XmlElement(name = "geobaseid")
  public void set_geobaseid(int _geobaseid) {
      this._geobaseid = _geobaseid;
  }
}

1 Ответ

0 голосов
/ 18 декабря 2018
 @Data
 @XmlRootElement(name = "location")
 @XmlAccessorType(XmlAccessType.FIELD)
 class Location implements Serializable {
     private String name;
     private String type;
     private String country;
     private String timezone;
     @XmlElement(name = "location")
     private GeoLocation geoLocation;
 }


@Data
@XmlRootElement(name = "location")
@XmlAccessorType(XmlAccessType.FIELD)
class GeoLocation { //Ineer location
  @XmlAttribute(name = "altitude")
  private String _altitude;
  @XmlAttribute(name = "latitude")
  private double _latitude;
  @XmlAttribute(name = "longitude")
  private double _longitude;
  @XmlAttribute(name = "geobase")
  private String _geobase;
  @XmlAttribute(name = "geobaseid")
  private int _geobaseid;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...