Salut,L'analyse de Stax ne retourne pas la bonne réponse
Je suis confronté à un problème très étrange lors de l'analyse de réponse SOAP avec Jaxb. Je ne suis pas en mesure d'obtenir la liste complète des balises lors de l'analyse syntaxique .Stax parser est en mesure d'analyser une seule balise, ce qui ne donne aucune erreur ou exception.Cependant, si j'essaie de formater la réponse xml (qui est stockée dans la chaîne) bien. Voici ce que je fais pour l'analyser: -
public void parseResponse(){
String response="<SOAP:Body><response><result><myTag></myTag><myTag></myTag>/result</response</SOAP:Body>";
getUnmarshalledObject(response,myTag,MyTag.class,"com.mylearning.parseXml");
}
public <T> List<T> getUnmarshalledObject(String response ,String TAG_TO_SEARCH ,Class<T> clazz , String basePkg)
throws XMLStreamException, JAXBException{
Reader reader = new StringReader(response);
XMLInputFactory xif = XMLInputFactory.newInstance();
XMLStreamReader xsr = xif.createXMLStreamReader(reader);
List<T> listOfUnmarshalledObjects = new ArrayList<T>();
while (xsr.hasNext()) {
if (xsr.getEventType() == XMLStreamReader.START_ELEMENT && TAG_TO_SEARCH.equals(xsr.getLocalName())) {
T unmarshalledObj = unmarshalXml(clazz ,xsr, basePkg);
listOfUnmarshalledObjects .add(unmarshalledObj);
}
xsr.next();
}
return listOfUnmarshalledObjects;
}
Voici différents cas d'utilisation du problème: -
Case 1:- Input String response is unformatted.
Result :- listOfUnmarshalledObjects is 1.
Case 2:- Format response with response.replaceAll("><",">\n<");
Result:- listOfUnmarshalledObjects is 2.
Case 3 : Input String unformatted , just give space b/w </myTag><myTag>
Result: listOfUnmarshalledObjects is 2.
I tried my best to explain the question, please help me.
> Blockquote