javax.xml.bind.UnmarshalException - со связанным исключением:
Я получил получить входной поток XML с URLConnection. Однако, когда я пытаюсь разобрать входящий поток. Это исключение. javax.xml.bind.UnmarshalException - со связанным исключением: [javax.xml.stream.XMLStreamException: ParseError at [row,col]:[53088,40] Сообщение: ссылка на сущность "T" должна заканчиваться символом ';' разделитель.]
КОД:
try {
URL url = new URL(hostURL);
URLConnection urlConnection = url.openConnection();
urlConnection.setRequestProperty("Accept", "application/xml");
urlConnection.setRequestProperty("Authorization", "Basic " + authDetails);
InputStream inputStream = urlConnection.getInputStream();
XMLInputFactory xif = XMLInputFactory.newInstance();
xif.setProperty("javax.xml.stream.isCoalescing", true);
XMLStreamReader xsr = xif.createXMLStreamReader(inputStream);
// Advance to the "Packages" element.
while(xsr.hasNext()) {
if(xsr.isStartElement() && "packages".equals(xsr.getLocalName())) {
break;
}
xsr.next();
}
JAXBContext jaxbContext = JAXBContext.newInstance(Packages.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
packages = (Packages) jaxbUnmarshaller.unmarshal(xsr);
}catch (JAXBException e) {
e.printStackTrace();
}catch (MalformedURLException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
}
PS: [row, col]: [53088,40] = новый продукт для T&T evol
Вы можете найти следы стека в ссылке http://pastebin.com/LuhbnMQq
Ребята, новичок в этой вещи и застрял с ней, любая помощь будет оценена
БР Сара
2 ответа
Ваш XML-файл не правильно сформирован.
newproductsite for T&T evol
Вы не можете иметь "&" в XML-файле, оно должно быть представлено как
&
Как был создан XML? Ошибка есть...
Ваш ввод XML не правильно сформирован. В тексте newproductsite for T&T evol
амперсанд - зарезервированный символ. Он используется для побега (например, <
представляет <
подписать или A
это письмо A
, Итак, после &
в тексте синтаксический анализатор ожидает значение и ;
чтобы увидеть, что escape-последовательность завершена. Если вы хотите использовать амперсанд в элементах xml, он должен быть экранирован, например: &
,
Чтобы решить проблему, источник должен создать либо правильно сформированный xml, либо вам необходимо очистить полученные данные перед их обработкой. Я бы порекомендовал первое.