javax.xml.bind.UnmarshalException - 包含链接异常:

时间:2014-08-06 07:29:32

标签: java xml xmlstreamreader

我收到了一个带有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 萨拉

2 个答案:

答案 0 :(得分:0)

您的XML文件格式不正确。

newproductsite for T&T evol

你不能拥有'&'在XML文件中,它必须表示为

&

XML是如何产生的?错误就在那里......

答案 1 :(得分:0)

您的xml输入格式不正确。在文本newproductsite for T&T evol中,&符号是保留字符。它用于转义(例如&lt;表示<符号或&#x41;表示字母A。因此,在文本中的&之后,解析器期望值和;看到转义序列已完成。 如果你想在你的xml元素中使用&符号,它必须被转义,例如&amp;

要解决问题,源需要生成格式正确的xml,或者需要在处理之前清理收到的数据。我会推荐第一个。