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 амперсанд - зарезервированный символ. Он используется для побега (например, &lt; представляет < подписать или &#x41; это письмо A, Итак, после & в тексте синтаксический анализатор ожидает значение и ; чтобы увидеть, что escape-последовательность завершена. Если вы хотите использовать амперсанд в элементах xml, он должен быть экранирован, например: &amp;,

Чтобы решить проблему, источник должен создать либо правильно сформированный xml, либо вам необходимо очистить полученные данные перед их обработкой. Я бы порекомендовал первое.

Другие вопросы по тегам