私はAPIからJavaオブジェクトにいくつかのXML値をバインドする必要がある学校プロジェクトに取り組んでいます。私はすべての要素を取得することができますが、特定の要素の属性を取得することはできません。私は解決策を見回しましたが、解決策は見つかりませんでした。XML値をオブジェクト値にアンマーシャリングする
JAXBでJavaオブジェクトにアンマーシャリングするXMLコードがあります。私が取得したい属性はDeparturetrackで 'changes'です。
<Departures>
<DepartingTrain>
<Id>220</Id>
<DepartureTime>2017-03-07T11:03:00+0100</DepartureTime>
<DepartureTrack changes="false">5</DepartureTrack>
</DepartingTrain>
<DepartingTrain>
<Id>637</Id>
<DepartureTime>2017-03-07T11:18:00+0100</DepartureTime>
<DepartureTrack changes="false">12</DepartureTrack>
</DepartingTrain>
</Departures>
私は現在このオブジェクトを持っていますが、すべての要素で機能します。私はどのように属性 '変更'を取得し、このオブジェクトに配置するのか分からない。
@Entity
@Getter
@Setter
@NoArgsConstructor
@XmlRootElement(name="Departures")
@XmlAccessorType(XmlAccessType.FIELD)
public class Departure {
@Id
@GeneratedValue
private long id;
@XmlElement(name="Id")
private int routeNumber;
@XmlElement(name="DepartureTime")
private String departureTime;
@XmlElement(name="DepartureTrack")
private String departureTrack;
}
私はこのオブジェクトを持つすべての出発点を持つリストを作成します。
@Entity
@Getter
@Setter
@NoArgsConstructor
@XmlRootElement(name="Departures")
@XmlAccessorType(XmlAccessType.FIELD)
public class DepartureList {
@Id
@GeneratedValue
private long id;
@XmlElement(name="DepartingTrain")
@OneToMany
private List<Departure> departures = new ArrayList<>();
}
これは私のアンマーシャラーの外観です。
// Returns all departures for a specific station
public DepartureList getDepartingTrains(String station){
try {
URL url = new URL("API URL" + station);
URLConnection urlConnection = url.openConnection();
urlConnection.setRequestProperty("Authorization", "Basic " + authStringEnc);
InputStream is = urlConnection.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
Unmarshaller unmarshaller = departureListJaxbContext.createUnmarshaller();
DepartureList departureList = (DepartureList) unmarshaller.unmarshal(isr);
return departureList;
} catch (JAXBException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// Throw Exception
return null;
}
誰もがXMLシートからこの属性を取得し、Javaオブジェクトにそれを置く方法を知っていますか?
正しいです。属性にブール値のリテラルだけが含まれている場合は、StringをBoolean(またはboolean)に変更することもできます(これらは必須です)。 –