générateur de rapports.parse (new StringReader(xml)) renvoie DeferredDocumentImpl

J'essaie de comprendre quelle erreur j'aurais fait, mais ne peut pas trouver la solution.

public static Document getXMLFromString(String xml) { 
org.le w3c.dom.Le Document doc = null; 
try { 
DocumentBuilderFactory factory = DocumentBuilderFactory 
.newInstance(); 
usine.setNamespaceAware(true); 
DocumentBuilder builder; 
builder = factory.newDocumentBuilder(); 
doc = (org.le w3c.dom.Document) du générateur.parse(new InputSource( 
nouveau StringReader(xml))); 
} catch (SAXException e) { 
e.printStackTrace(); 
} catch (IOException e) { 
e.printStackTrace(); 
} catch (ParserConfigurationException e) { 
e.printStackTrace(); 
} 
retour doc; 
}

Je n'import org.le w3c.dom.Document

Je suis à l'appel de cette méthode ici:

privé Nœud getAuthToken(SOAPMessage responseAuth) throws SOAPException, 
TransformerException, ParserConfigurationException, IOException, 
SAXException { 
String s = indentXML(responseAuth.getSOAPPart().getContent()); 
Le Document doc = getXMLFromString(s); 
NodeList authTokenNodeList = doc.getElementsByTagName("authToken"); 
retour authTokenNodeList.item(0); 
} 

La NodeList est vide.

Après mes recherches sur le web, tout le monde utilise ce code pour parser une chaîne de caractères dans un Document. Je n'ai pas l'exception, mais, après l'appel de la méthode parse(), la valeur de la doc est réglé sur [document#: null] DeferredDocumentImpl.

Je suis en utilisant tout de le org.le w3c.dom.

xml est une chaîne qui contient

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<context xmlns="urn:zimbra">
<session id="36" type="admin">36</session>
<change token="251"/>
</context>
</soap:Header>
<soap:Body>
<AuthResponse xmlns="urn:zimbraAdmin">
<authToken>...</authToken>
<lifetime>...</lifetime>
<a n="zimbraIsDomainAdminAccount">false</a>
<session id="36" type="admin">36</session>
</AuthResponse>
</soap:Body>
</soap:Envelope>

Voici comment j'ai construit la chaîne après un appel SOAP:

Chaîne xml = indentXML(responseAuth.getSOAPPart().getContent());

Ce que je fais mal?

C'est ce que je suis en train d'essayer de le faire d'une manière simple:

StringBuilder soapResponse = new StringBuilder(... 
... 
... 
); 

org.le w3c.dom.Le Document doc = null; 
try { 
DocumentBuilderFactory factory = DocumentBuilderFactory 
.newInstance(); 
usine.setNamespaceAware(true); 
DocumentBuilder builder; 
builder = factory.newDocumentBuilder(); 
doc = (org.le w3c.dom.Document) du générateur.parse(new InputSource( 
nouveau StringReader(soapResponse.toString()))); 
} catch (SAXException e) { 
e.printStackTrace(); 
} catch (IOException e) { 
e.printStackTrace(); 
} catch (ParserConfigurationException e) { 
e.printStackTrace(); 
} 
NodeList authTokenNodeList = doc.getElementsByTagName("authToken"); 
Nœud n = authTokenNodeList.item(0); 
String s = n.getNodeValue();
Qu'est-ce que dans le contenu du Fichier, et qu'est-ce que la varialbe xml ?
Pourrais-tu nous montrer le code complet de votre importation comme Jon Skeet a dit dans sa réponse
Juste édité mon message, je vous remercie pour votre aide les gars, je ne comprends vraiment pas quel est le problème.
si le XML est à partir d'un fichier, avez-vous essayé de le lire à partir du fichier en utilisant la méthode parse??
Le XML est celui que j'ai reçu après avoir fait un appel SOAP. Chaîne xml = indentXML(responseAuth.getSOAPPart().getContent());

OriginalL'auteur user393381 | 2011-06-17