【发布时间】:2013-06-06 19:58:47
【问题描述】:
我对 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;
}
提前致谢。
【问题讨论】:
-
你想要完成什么,具体是什么不起作用?
-
@Jacinda 我正在尝试使用 ArrayList
获取对象 MovementCards,并且每个 MovementCard 需要有一个由六个整数组成的数组(int[] 运动)。根据我发布的 XML,我应该得到一个运动卡的列表,这个运动卡的动作应该是 [3, 3, 2, 2, 2, 2]。我尝试调试这部分,它根本没有填充数组。它留下六个零。
标签: xml jaxb xml-deserialization unmarshalling