0
解析黑莓應用程序中的XML結果,該應用程序返回表單中的節點;在黑莓xml解析中的空節點處顯示消息
<searches>
<search id ='1234'>
<name> somename </name>
<address> some address </address>
<sector> some sector </sector>
<contacts> 12345, [email protected] </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?
我在'else'子句中放了'callback(list,list1,list2,list3);'。它按照我輸入的方法工作,也就是說,如果找到結果,它會打開一個新頁面。但是'Dialog.alert(「找不到結果!」);'如果找不到結果,不會出現。但幸運的是,它並沒有像以前那樣打開一個空白頁面,只是對話框沒有打開,這非常重要。 – michael92 2012-07-15 22:14:39
@ michael92,對不起。即使您沒有明確地發佈此代碼,我可能應該假設您正在後臺線程上運行您的HTTP連接代碼。是對的嗎?如果是這樣,你應該確保在UI線程上發佈你的'Dialog.alert()'調用。我已經更新了我的答案以證明這一點。上面的代碼現在應該適合在後臺/工作線程上運行。 – Nate 2012-07-16 06:57:39
你是一個救星。希望我能給你10分:) – michael92 2012-07-16 08:29:35