javax.xml.bind.UnmarshalException - liés exception:
Je dois recevoir un xml inputstream avec un URLConnection. Cependant lorsque j'essaie de unmarshall l'inputstream. Il lève une exception.
javax.xml.bind.UnmarshalException
- associé à l'exception:
[javax.xml.flux de données.XMLStreamException: ParseError à [row,col]:[53088,40]
Message: La référence à l'entité "T" doit se terminer avec le ';' délimiteur.]
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] = newproductsite pour T&T evol
vous pouvez trouver des traces de Pile en lien http://pastebin.com/LuhbnMQq
Les gars je suis nouveau à ce truc et coincé avec elle, toute aide serait appréciée
BR
Sara
Vous devez vous connecter pour publier un commentaire.
Votre fichier XML n'est pas bien formé.
Vous ne pouvez pas avoir un "& " dans le fichier XML, il doit être représenté comme
Comment était le XML produit? L'erreur est là...
xif.setProperty("javax.xml.stream.isCoalescing", true);
et voir si l'erreur reste.Votre entrée xml n'est pas bien formé. Dans le texte
newproductsite for T&T evol
l'esperluette est un caractère réservé. Il est utilisé pour s'échapper (par exemple<
représente la<
signe ouA
est la lettreA
. Donc, après la&
dans le texte, l'analyseur attend une valeur et un;
de voir que la séquence d'échappement est fini.Si vous souhaitez utiliser l'esperluette dans vos éléments xml, il faut l'échapper par exemple par
&
.Pour résoudre le problème de la source doit produire soit xml bien formé ou vous avez besoin de désinfecter les données reçues avant de les traiter. Je recommanderais le premier.
&
avec&
pourrait aider.<
dans certains nœud de texte? Ou un "& " à l'intérieur d'une CDATA?