2015-12-08 1 views
0

J'ai le code suivantLe passage d'un stringbuilder à un doc

private void getdata(String stringfromDate,String stringtoDate) throws IOException { 
StringBuilder retVal = new StringBuilder(); 
URL oracle = new URL("https://xxxxxxxxxxxxxxxx" + stringfromDate +"&ToDate=" + stringtoDate +""); 
BufferedReader in = new BufferedReader(new InputStreamReader(oracle.openStream())); 

String newLine = "\n"; 
String inputLine; 
while ((inputLine = in.readLine()) != null) { 
      //System.out.println(inputLine); 
retVal.append(inputLine).append(newLine); 

} 

in.close(); 

passSting(retVal); 

    } 

private void passSting(StringBuilder retVal) { 
Document doc = null; 
try { 
doc = loadXMLFromString(retVal.toString());//pull in the XML data into a new doc 
System.out.println(doc); 
} catch (Exception ex) { 
Logger.getLogger(JavaApplication63.class.getName()).log(Level.SEVERE, null, ex); 
} 
    } 

public static org.w3c.dom.Document loadXMLFromString(String xml) throws Exception{ 
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder builder = factory.newDocumentBuilder(); 
InputSource is = new InputSource(new StringReader(xml)); 
return builder.parse(is); 
} 

Je passe par retVal à une méthode afin que je puisse créer un document qui peut être lu comme un document XML, mais la valeur doc apparaît être nul ce que je fais mal? C'est ce que je reçois dans la fenêtre de la console [#document: null]

+1

Etes-vous sûr qu'il y a quelque chose dans 'StringBuilder'? Vous avez une instruction d'impression dans 'while', donc je suppose que vous avez testé cette partie. – gonzo

+0

Oui si je survole au-dessus du retVal.toString() je vois les données attendues ... c'est juste que le doc apparaît null ... – Ingram

+0

Que diriez-vous si vous ajoutez 'factory.setNamespaceAware (true);' juste avant de créer le ' constructeur ». – gonzo

Répondre

1

org.w3c.dom.Document#toString La méthode retourne null. Cependant, l'objet réel n'est pas null. Si vous imprimez doc==null après avoir analysé le String, vous devriez voir qu'il renvoie false au lieu de true. J'espère que cela t'aides.

+0

@ gonzo, alors que dois-je faire pour que le contenu apparaisse dans doc, puisque doc est passé à une méthode populate qui prend chaque et les sépare. – Ingram

+0

@MrAssistance les données sont toujours dans votre objet 'doc' vous n'accédez simplement pas aux données comme vous le faites actuellement. Vous devez utiliser l'API du 'doc'. Essayez de faire quelque chose comme 'doc.getDocumentElement(). GetTextContent()' – gonzo

+0

oui qui semble fonctionner en me donnant tout le contenu du texte, que dois-je utiliser pour obtenir les données comme Ingram