我试图JAXB标注添加到类,以解组XML看起来类似于这样(注意:我不需要名帅一个java豆成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个字符串中的一个,所以我也暂时从FixtureStatistics类的集合中删除了任何注释,因为我确实不确定那里是什么。我曾尝试使用@XmlElementRef,指定所有可能的元素名称,但那还没有为我工作,也无法更改XML,我没有一个模式来处理,只有从API调用产生的XML。
感谢布莱斯。 出于兴趣,我选择了第一种选择,因为我实际上可以使用单独的对象,以及稍后将它们全部放入集合中。 –