0

XML を解析すると、blackberry アプリケーションで結果が返され、フォームにノードが返されます。

<searches> 
<search id ='1234'>
<name> somename </name>
<address> some address </address>
<sector> some sector </sector>
<contacts> 12345, me@me.com </contacts>
<searches>     

一致するものがない検索が行われると、結果は空で返されます。

<name></name>
<address></address>
<sector></sector> 
<contacts></contacts>

結果を返さないでください。のように表示され<searches></searches>ます。検索結果がちょうど返されるような場合に、ダイアログ アラートを指定するにはどうすればよいですか?<searches></searches>

これがパーサーに接続された私のHTTP接続です。

   try{
         HttpConnection connection = (HttpConnection)Connector.open("http://someurl.xml",Connector.READ_WRITE);
         URLEncodedPostData postData = new URLEncodedPostData(URLEncodedPostData.DEFAULT_CHARSET, false);
         postData.append("username", "someusername");
         postData.append("password", "somepassword");
         postData.append("term", word);
         connection.setRequestMethod(HttpConnection.POST);
         connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
         connection.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.0");
         OutputStream requestOut = connection.openOutputStream();
         requestOut.write(postData.getBytes());
         connection.getHeaderField("Content-type"); 
         DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
         DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
         docBuilder.isValidating();
         InputStream detailIn = connection.openInputStream();
         doc = docBuilder.parse(detailIn);
         requestOut.close();
         connection.close(); 
         NodeList list = doc.getElementsByTagName("name");
         NodeList list1 = doc.getElementsByTagName("address");
         NodeList list2 = doc.getElementsByTagName("sector");
         NodeList list3 = doc.getElementsByTagName("contacts");
         callback(list,list1,list2,list3);
         requestOut.close();
         connection.close();
     }
     catch(Exception ex){
         System.out.println(ex.toString());
     } 

if または for を使用しますか?

4

1 に答える 1

1

目の前に Eclipse プラグインがありません (そのため、このコードをテストすることはできません) が、次のようなものが動作するはずです。

doc = docBuilder.parse(detailIn);
requestOut.close();
connection.close(); 
NodeList list = doc.getElementsByTagName("name");
NodeList list1 = doc.getElementsByTagName("address");
NodeList list2 = doc.getElementsByTagName("sector"); 
NodeList list3 = doc.getElementsByTagName("contacts");
if (list == null || list.getLength() == 0) {
    // no results, so post an alert on the UI thread
    UiApplication.getUiApplication().invokeLater(new Runnable() {
        public void run() {
            Dialog.alert("No results found!");
        }
    });
}

nameこれは、要素の存在のみをテストします。ifnameが欠落している場合は、他の要素 (住所、セクター、および連絡先) も欠落していると想定します。ifそれがアプリケーションに当てはまらない場合は、ステートメントを check list1list2、およびlist3alsoにすることを選択できます。

于 2012-07-14T20:53:04.617 に答える