1

私は 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;
    }

前もって感謝します。

4

1 に答える 1