В настоящее время я пытаюсь изменить много XML в объекты Java, но я все время застреваю. Я пробовал копировать множество разных примеров в Интернете, но я никогда не могу найти правильный путь, и мне очень сложно отлаживать его.Java - JAXB - Unmarshalling: Как достичь правильной настройки?
Мой XML выглядит следующим образом
<?xml version="1.0" encoding="utf-8"?>
<XMLSOCCER.COM>
<TeamLeagueStanding xmlns="http://xmlsoccer.com/LeagueStanding">
<Team>Leicester</Team>
<Team_Id>31</Team_Id>
<Played>26</Played>
<PlayedAtHome>12</PlayedAtHome>
<PlayedAway>14</PlayedAway>
<Won>15</Won>
<Draw>8</Draw>
<Lost>3</Lost>
<NumberOfShots>464</NumberOfShots>
<YellowCards>40</YellowCards>
<RedCards>1</RedCards>
<Goals_For>48</Goals_For>
<Goals_Against>29</Goals_Against>
<Goal_Difference>19</Goal_Difference>
<Points>53</Points>
</TeamLeagueStanding>
<TeamLeagueStanding xmlns="http://xmlsoccer.com/LeagueStanding">
<Team>Tottenham</Team>
<Team_Id>21</Team_Id>
...
Так что я просто есть список TeamLeagueStanding
с, что я хочу, чтобы сохранить в качестве объектов команды. Мой Java код для класса команды в настоящее время, как этот
@XmlRootElement(name = "TeamLeagueStanding")
public class Team {
@XmlElement(name = "Team")
String teamName;
@XmlElement(name = "Team_Id")
int teamID;
public Team (String team, int id) {
super();
this.teamName = team;
this.teamID = id;
}
}
Мои команды класса, который просто держать список команд, как это
@XmlRootElement(name = "XMLSOCCER.COM")
public class Teams {
@XmlElement
List<Team> teamList;
public Teams() {
}
}
и моя главная функция как этот
public class Main {
public static void main(String[] args) throws Exception {
File xml = new File("data/GetLeagueStandingsPrem1516.xml");
JAXBContext jc = JAXBContext.newInstance(Teams.class);
Unmarshaller um = jc.createUnmarshaller();
Teams t = (Teams) um.unmarshal(xml);
System.out.println(t.teamList.size());
}
}
Я пробовал так много способов, и я всегда получаю исключение нулевого указателя или различные IllegalAnnotationExceptions
. Если кто-нибудь знает, куда я иду, я бы очень признателен за любые указатели!
Спасибо,
Simon
Рассмотрим указать XSD и генерировать классы JAXB с помощью XJC. (Обратите внимание: корневой элемент действителен только в корневом каталоге) – Puce
Так что я думаю, что проблема связана с моим XML, а не с моей Java - я удалил атрибуты xmlns и код ниже. – doblo7