2014-02-22 49 views
0

此代碼將一些細節發送到openvas服務器並接收XML。我試圖從XML字符串中取'id ='字符串。它似乎工作(即沒有錯誤),但不會輸出'ID'字符串的內容。它幾乎沒有任何內容。帶有jSoup的XML解析器 - 無輸出?

我試着給'id'添加一個隨機字符串 - 這可以很好地輸出到jTextField6。

任何人都可以看到我的問題?謝謝!

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
    // TODO add your handling code here: 
      String TargIP = jTextField1.getText(); // Get IP Address 
      String TargName = jTextField5.getText(); // Get Target Name 
      String Vag = "8d32ad99-ac84-4fdc-b196-2b379f861def"; 
      String Lob = ""; 

    final String dosCommand = "cmd /c omp -u admin -w admin --xml=\"<create_target><name>" + TargName + "</name><hosts>" + TargIP + "</hosts></create_target>\""; 

    final String location = "C:\\"; 

try { 
    final Process process = Runtime.getRuntime().exec(
     dosCommand + " " + location); 
    final InputStream in = process.getInputStream(); 
    int ch; 
    while((ch = in.read()) != -1) { 
     System.out.print((char)ch); 
     Lob = String.valueOf((char)ch); 
     jTextArea2.append(Lob); 



    } 
    String id = Jsoup.parse(Lob).getAllElements().attr("id"); // This may be the issue 

     jTextField6.setText(id); 



    } catch (IOException e) { 
    e.printStackTrace(); 
    } 

字符串高球如下:

<create_target_response id="b4c8de55-94d8-4e08-b20e-955f97a714f1" status_text="OK, resource created" status="201"></create_target_response> 
+0

難道你不是指'Jsoup.parse(jTextArea2)' - Lob是最後一個字符。 – StuartLC

+0

非常感謝!它始終是小東西:) – Remotejon

回答

0

Lob將僅包含一個字符,是從流最後一個讀。這是我會怎麼做,FWIW:

StringBuilder fullResponse = new StringBuilder(); 
while((ch = in.read()) != -1) { 
    System.out.print((char)ch); 
    fullResponse.append(String.valueOf((char)ch)); 
} 
jTextArea2.append(fullResponse.toString()); 
String id = Jsoup.parse(fullResponse.toString()).getAllElements().attr("id"); 

編輯 - 更新與StringBuilder的按@Pshemo。

+1

附註:雖然'+ ='更容易理解,最好使用單獨的'StringBuilder'來追加新的字符。 – Pshemo

+0

非常正確,謝謝,人們永遠不知道會有多長時間的迴應,並且殺死所有這些小貓將是一種遺憾。 – StuartLC