我收到了一个带有URLConnection的xml输入流。但是,当我尝试解组输入流时。它抛出异常。 javax.xml.bind.UnmarshalException - 链接异常: [javax.xml.stream.XMLStreamException:[row,col]处的ParseError:[53088,40] 消息:对实体的引用" T"必须以&#39 ;;'结尾分隔符。]
CODE:
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
中找到堆栈跟踪伙计们对这件事情不熟悉并坚持下去,任何帮助都会受到赞赏
BR 萨拉
答案 0 :(得分:0)
您的XML文件格式不正确。
newproductsite for T&T evol
你不能拥有'&'在XML文件中,它必须表示为
&
XML是如何产生的?错误就在那里......
答案 1 :(得分:0)
您的xml输入格式不正确。在文本newproductsite for T&T evol
中,&符号是保留字符。它用于转义(例如<
表示<
符号或A
表示字母A
。因此,在文本中的&
之后,解析器期望值和;
看到转义序列已完成。
如果你想在你的xml元素中使用&符号,它必须被转义,例如&
。
要解决问题,源需要生成格式正确的xml,或者需要在处理之前清理收到的数据。我会推荐第一个。