これに似た XML をアンマーシャリングするために、JAXB アノテーションをクラスに追加しようとしています (Java Bean を XML にマーシャリングする必要はないことに注意してください...):
<fixture_statistics id="3812596">
<home_team_stats id="2">
<id>2</id>
<tackles>58</tackles>
<possession>1868</possession>
<territory>2603</territory>
<minutes_in_22>1316</minutes_in_22>
...
</home_team_stats>
<guest_team_stats id="21061">
<id>21061</id>
<tackles>20</tackles>
<possession>3114</possession>
<territory>2379</territory>
<minutes_in_22>1171</minutes_in_22>
...
</guest_team_stats>
<home_player_1 id="2306143" teamid="2">
<id>2306143</id>
<tackles>3</tackles>
<metres_gained>38</metres_gained>
...
</home_player_1>
<home_player_1 id="2306143" teamid="2">
<id>2306143</id>
<tackles>3</tackles>
<metres_gained>38</metres_gained>
...
</home_player_1>
<home_player_1 id="2306143" teamid="2">
<id>2306143</id>
<tackles>3</tackles>
<metres_gained>38</metres_gained>
...
</home_player_1>
...
<guest_player_1 id="2306143" teamid="2">
<id>2306143</id>
<tackles>3</tackles>
<metres_gained>38</metres_gained>
...
</guest_player_1>
<guest_player_2 id="2306143" teamid="2">
<id>2306143</id>
<tackles>3</tackles>
<metres_gained>38</metres_gained>
...
</guest_player_2>
<guest_player_3 id="2306143" teamid="2">
<id>2306143</id>
<tackles>3</tackles>
<metres_gained>38</metres_gained>
...
</guest_player_3>
...
</fixture_statistics>
*この質問のためにコピーして貼り付けたので、要素の値の一部を無視してください...
「fixture_statistics」、「home_team_stats」、および「guest_team_stats」要素をそれぞれのクラスにマッピングし、これらの要素を正しく非整列化できましたが、「home_player_n」要素と「guest_player_n」要素に問題があります. これらの要素内にあるプロパティを含むクラスを作成しましたが、要素の名前が「home_player_1」から「home_player_22」まで、ゲスト プレイヤーでも同じであるという事実を処理する方法がわかりません。
ここに私のフィクスチャ統計クラスと私のフィクスチャ プレーヤー統計クラスのサンプルを示します。
@XmlRootElement(name = "fixture_statistics")
@XmlAccessorType(XmlAccessType.FIELD)
public class FixtureStatistics {
private Collection<FixturePlayerStatistics> homeTeamPlayerStatistics = new ArrayList<>();
private Collection<FixturePlayerStatistics> guestTeamPlayerStatistics = new ArrayList<>();
}
@XmlAccessorType(XmlAccessType.FIELD)
public class FixturePlayerStatistics {
@XmlElement(name="id")
private Long playerId;
private Integer tackles;
@XmlElement(name="metres_gained")
private Integer metresGained;
}
FixturePlayerStatistics クラスでは、XMlRootElement 注釈を追加できません。要素が 44 個の文字列のうちの 1 つである可能性があるためです。また、FixtureStatistics クラスのコレクションから注釈を一時的に削除しました。@XmlElementRef を使用して、考えられるすべての要素名を指定しようとしましたが、まだうまくいきませんでした。また、XML を変更することもできず、操作するスキーマもありません。API 呼び出しからの結果の XML だけです。