J'essaie de transférer un morceau potentiellement important de xml d'un client C# vers une application GAEJ, puis de l'analyser dans un document DOM.
J'ai réussi à faire en sorte que le documentbuilder analyse le xml en analysant les données de la requête dans une chaîne de caractères, puis en la découpant, comme tel :
String xml;
BufferedReader rdr = req.getReader();
String line;
StringBuilder result = new StringBuilder();
while ((line = rdr.readLine()) != null) {
result.append(line);
}
xml = result.toString();
db = dbf.newDocumentBuilder();
Document doc = db.parse(new InputSource(new StringReader(xml.trim())));
Cependant, l'application GAEJ doit être aussi efficace que possible et la lecture ligne par ligne de l'entrée xml potentiellement volumineuse vers une chaîne de caractères, par opposition à l'alimentation du flux source vers l'analyseur syntaxique, semble assez mauvaise. J'aimerais que la procédure suivante fonctionne :
Document doc = db.parse(request.getInputStream());
Mais ensuite, j'obtiens toujours "org.xml.sax.SAXParseException : Content is not allowed in trailing section". Si j'envoie le contenu de l'appel request.getInputStream() à la console, je peux voir quelques caractères encadrés après la balise de fermeture finale, mais je ne suis pas sûr de savoir comment ils sont arrivés là (le client utilise un encodage UTF-8), ou comment les supprimer du flux d'entrée. Merci !