JAXB解析占用了xml个属性
JAXB parse taken up xml attributes
我正在尝试解析 xml 的以下部分。有两个 "location" 标签。而第二个已经占用了属性。但是我无法正确设置 JAXB,因为第二个 class 没有设置属性。是否还有使用 lombook 简化代码的方法,但将字段保持为私有。
<location>
<name>London</name>
<type/>
<country>GB</country>
<timezone/>
<location altitude="0" latitude="51.5085" longitude="-0.1258" geobase="geonames" geobaseid="2643743"/>
</location>
这里是外部位置class:
@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;
}
}
第二个class:
@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;
}
}
@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;
}
我正在尝试解析 xml 的以下部分。有两个 "location" 标签。而第二个已经占用了属性。但是我无法正确设置 JAXB,因为第二个 class 没有设置属性。是否还有使用 lombook 简化代码的方法,但将字段保持为私有。
<location>
<name>London</name>
<type/>
<country>GB</country>
<timezone/>
<location altitude="0" latitude="51.5085" longitude="-0.1258" geobase="geonames" geobaseid="2643743"/>
</location>
这里是外部位置class:
@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;
}
}
第二个class:
@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;
}
}
@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;
}