В настоящее время я пытаюсь разобрать некоторый существующий XML на несколько классов, которые я создал вручную. Проблема в том, что я всегда получаю сообщение об ошибке, которое говорит мне, что JaxB ожидает элемент погоды, но находит элемент погоды. (?)
javax.xml.bind.UnmarshalException: неожиданный элемент (URI: «http://www.aws.com/aws», локальный: «погода»). Ожидаемые элементы: ‹{}api>,‹{}location>,‹{}weather>.
Я пробовал с и без «aws:» в названии элементов.
Вот мой класс погоды:
@XmlRootElement(name = "aws:weather")
public class WeatherBugWeather
{
private WeatherBugApi api;
private List<WeatherBugLocation> locations;
private String uri;
@XmlElement(name="aws:api")
public WeatherBugApi getApi()
{
return this.api;
}
@XmlElementWrapper(name = "aws:locations")
@XmlElement(name = "aws:location")
public List<WeatherBugLocation> getLocations()
{
return this.locations;
}
public void setApi(WeatherBugApi api)
{
this.api = api;
}
public void setLocations(List<WeatherBugLocation> locations)
{
this.locations = locations;
}
@XmlAttribute(name="xmlns:aws")
public String getUri()
{
return this.uri;
}
public void setUri(String uri)
{
this.uri = uri;
}
}
И это XML, который я пытаюсь разобрать:
<?xml version="1.0" encoding="utf-8"?>
<aws:weather xmlns:aws="http://www.aws.com/aws">
<aws:api version="2.0" />
<aws:locations>
<aws:location cityname="Jena" statename="" countryname="Germany" zipcode="" citycode="59047" citytype="1" />
</aws:locations>
</aws:weather>
Я не совсем уверен, что я делаю неправильно. Любые подсказки? Я подозреваю, что проблема заключается в определении xmlns, но я понятия не имею, что с этим делать. (Вы можете убедиться в этом, взглянув на свойство uri. Это была неудачная идея. ^^) И да, я действительно пытался установить пространство имен, но это скорее установка uri пространства имен, а не его... имя.