2015-12-08 4 views
0

Я следующий кодПередача StringBuilder в документ

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); 
} 

Я передаю через RetVal к способу, так что я могу создать документ, который может быть прочитан как XML-документ, однако появляется значение документ быть нулевым, что я делаю неправильно? Это то, что я получаю в окне консоли [#document: null]

+1

Вы уверены, что что-то есть в 'StringBuilder'? У вас есть оператор печати в 'while', поэтому я предполагаю, что вы проверили эту часть. – gonzo

+0

Да, если я нависаю над retVal.toString(), я вижу ожидаемые данные ... его просто, что doc появляется null ... – Ingram

+0

Как насчет того, если вы добавите 'factory.setNamespaceAware (true);' прямо перед созданием ' builder'. – gonzo

ответ

1

org.w3c.dom.Document#toString метод возвращает null. Фактический объект не null. Если вы напечатаете doc==null после разбора String, вы должны увидеть, что он возвращает false вместо true. Надеюсь это поможет.

+0

@ gonzo, так что я должен делать, чтобы содержимое отображалось в документе, поскольку doc передается в метод заполнения, который принимает каждый и отделяет их. – Ingram

+0

@MrAssistance данные все еще находятся в вашем объекте 'doc', вы просто не получаете доступа к данным, как вы сейчас делаете. Вам необходимо использовать API 'doc'. Попробуйте сделать что-то вроде 'doc.getDocumentElement(). GetTextContent()' – gonzo

+0

да, что работает, давая мне весь текстовый контент, что бы я использовал, чтобы получить данные, такие как данные Ingram

Смежные вопросы