0

URLConnection で xml 入力ストリームを受け取りました。ただし、入力ストリームを非整列化しようとすると。例外をスローします。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

みんな、このことは初めてで、それに固執しています。どんな助けもいただければ幸いです

BR サラ

4

2 に答える 2

0

XML ファイルの形式が正しくありません。

newproductsite for T&T evol

XML ファイルに「&」を含めることはできません。次のように表す必要があります。

&

XML はどのように作成されましたか? エラーはそこにあります...

于 2014-08-06T07:34:39.723 に答える
0

xml 入力の形式が正しくありません。テキストnewproductsite for T&T evolでは、アンパサンドは予約文字です。これはエスケープに使用されます (たとえば、 は記号&lt;を表したり、文字を表したりします。したがって、テキスト内の の後に、パーサーはエスケープ シーケンスが終了したことを確認するために値と a を期待します。xml 要素でアンパサンドを使用する場合でエスケープする必要があります。<&#x41;A&;&amp;

この問題を修正するには、ソースが適切な形式の xml を生成するか、受信したデータを処理する前にサニタイズする必要があります。私は最初のものをお勧めします。

于 2014-08-06T07:46:30.137 に答える