2015-12-08 23 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()上面,我會看到預期的數據......它只是說文檔看起來是空的...... – Ingram

+0

如果你在創建''factory.setNamespaceAware(true) builder'。 – gonzo

回答

1

org.w3c.dom.Document#toString方法返回null。但實際的對象不是null。如果在解析String後打印doc==null,則應該看到它返回false而不是true。希望這可以幫助。

+0

@ honzo,所以我應該怎麼做,以便內容顯示在文檔中,因爲文檔正在傳遞給填充方法,其中每個並將它們分開。 – Ingram

+0

@MrAssistance數據仍然在你的'doc'對象中,你只是不能訪問你正在做的數據。你需要使用'doc'的API。嘗試做一些像'doc.getDocumentElement()。getTextContent()' – gonzo

+0

是的,似乎工作給我所有的文字內容,我會用什麼來獲取數據如數據 Ingram