私は XML のシリアル化と処理にまったく慣れていません。私はプロジェクトに取り組んでおり、読み取ってオブジェクトに逆シリアル化する必要がある XML ファイルがたくさんあります。これまで XML ファイルを処理したことがないので、stackoverflow でこちらを読んでみましたが、いくつかのコードを思いつきました。機能するものもあれば、機能しないものもあり、その理由がわかりません。
私の XML ファイルは次のようになります (さらに動きがありますが、おわかりいただけると思います)。
<MovementCards>
<MovementCard>
<movements>
<int>3</int>
<int>3</int>
<int>2</int>
<int>2</int>
<int>2</int>
<int>2</int>
</movements>
</MovementCard>
</MovementCards>
そして、これらは私のクラスです:
@XmlRootElement(name="MovementCards")
public class MovementCards {
private List<MovementCard> movementCards;
@XmlElement(name="MovementCard")
public List<MovementCard> getMovementCards() {
return this.movementCards;
}
public void setMovementCards(List<MovementCard> movementCards) {
this.movementCards = movementCards;
}
}
public class MovementCard extends Card {
@XmlElement(name="movements")
private int[] movements = new int[FamilyGameManager.NUMBER_OF_TRACKS];
public int[] getMovements() {
return movements.clone();
}
public void setMovements(int[] movements) {
this.movements = movements;
}
}
そして最後に、これは私が書いた関数です:
public List<MovementCard> generateMovementCards() {
List<MovementCard> list = new ArrayList<MovementCard>();
try {
File file = new File(MovementCardsFile);
JAXBContext jaxbContext = JAXBContext.newInstance(MovementCards.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
MovementCards movementCards = (MovementCards) jaxbUnmarshaller.unmarshal(file);
list = movementCards.getMovementCards();
}
catch (JAXBException e) {
e.printStackTrace();
}
return list;
}
前もって感謝します。