0

外部プログラム (OpenVAS) によって生成され、プログラムに文字列として正常に返された次の文字列があります。

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

文字列を分割して、逆コンマなしで「b4c8d ....14f1」を取得しようとしています。私はあらゆる種類のエスケープメソッドを試しましたが、「文字列にターゲット ID が含まれていません」という else メソッドを取得し続けています。文字列をチェックする IF ステートメントを削除しようとしましたが、同じ問題が引き続き発生します。目標は、ID 文字列を jTextField6 に取得することです。String Lob には、上記のように完全な文字列が含まれます。

     if (Lob.contains("id=\"")){
      // put the split here
           String[] parts = Lob.split("id=\"");
           String cut1 = parts[1];

           String[] part2 = cut1.split("\"");
           String TaskFinal = part2[0];

           jTextField6.setText(TaskFinal);

      }
       else {
           throw new IllegalArgumentException("String does not contain a Target ID");
       }

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

= ではなく " だけをエスケープする必要があるようです (そうすると、Java がエラーを発生させます)。

前もって感謝します

編集: jSoup lib を使用した現在のコード - 「id」文字列は表示されません。何か案は?ありがとう

    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>\"";
  3</comment><config id='daba56c8-73ec-11df-a475-002264764cea'/><target id='" + Vag + "'/></create_task>\"";
  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);


     }

  } catch (IOException e) {
     e.printStackTrace();
  }
           String id = Jsoup.parse(Lob).getAllElements().attr("id");
     System.out.println(id); // This doesn't output? 
}
4

5 に答える 5

1

これにより、ジョブ ID をより簡単に取得できます。

int idStart = Lob.indexOf("id=")+("id=\"").length();
System.out.println(Lob.substring(idStart,Lob.indexOf("\"",idStart)));
于 2014-02-21T10:41:30.317 に答える