Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
blackberry xml解析中在空节点显示消息_Blackberry_Xml Parsing_Nodes - Fatal编程技术网

blackberry xml解析中在空节点显示消息

blackberry xml解析中在空节点显示消息,blackberry,xml-parsing,nodes,Blackberry,Xml Parsing,Nodes,在blackberry应用程序中解析XML结果时,该应用程序返回表单中的节点 名字 某个地址 某些部门 12345, me@me.com 当进行没有任何匹配项的搜索时,结果返回为空,即 不要带着结果返回。它显示为。在这种情况下,当搜索结果仅返回 这是我与解析器的Http连接 试试看{ HttpConnection=(HttpConnection)连接器。打开(“http://someurl.xml,连接器。读写); URLEncodedPostData postData=新的URLEn

在blackberry应用程序中解析XML结果时,该应用程序返回表单中的节点


名字
某个地址
某些部门
12345, me@me.com 
当进行没有任何匹配项的搜索时,结果返回为空,即


不要带着结果返回。它显示为
。在这种情况下,当搜索结果仅返回

这是我与解析器的Http连接

试试看{
HttpConnection=(HttpConnection)连接器。打开(“http://someurl.xml,连接器。读写);
URLEncodedPostData postData=新的URLEncodedPostData(URLEncodedPostData.DEFAULT_字符集,false);
postData.append(“用户名”、“someusername”);
append(“password”、“somepassword”);
postData.append(“术语”,单词);
setRequestMethod(HttpConnection.POST);
connection.setRequestProperty(“内容类型”、“应用程序/x-www-form-urlencoded”);
connection.setRequestProperty(“用户代理”、“配置文件/MIDP-2.0配置/CLDC-1.0”);
OutputStream requestOut=连接。openOutputStream();
write(postData.getBytes());
connection.getHeaderField(“内容类型”);
DocumentBuilderFactory docBuilderFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder=docBuilderFactory.newDocumentBuilder();
isValidating();
InputStream detailIn=connection.openInputStream();
doc=docBuilder.parse(detailIn);
requestOut.close();
connection.close();
节点列表=doc.getElementsByTagName(“名称”);
NodeList list1=doc.getElementsByTagName(“地址”);
节点列表2=doc.getElementsByTagName(“扇区”);
NodeList list3=doc.getElementsByTagName(“联系人”);
回调(列表、列表1、列表2、列表3);
requestOut.close();
connection.close();
}
捕获(例外情况除外){
System.out.println(例如toString());
} 

我用if还是for

我面前没有Eclipse插件(因此我无法测试此代码),但类似的东西应该可以工作:

doc=docBuilder.parse(detailIn);
requestOut.close();
connection.close();
节点列表=doc.getElementsByTagName(“名称”);
NodeList list1=doc.getElementsByTagName(“地址”);
节点列表2=doc.getElementsByTagName(“扇区”);
NodeList list3=doc.getElementsByTagName(“联系人”);
if(list==null | | list.getLength()==0){
//没有结果,因此在UI线程上发布警报
UiApplication.getUiApplication().invokeLater(新的Runnable()){
公开募捐{
Dialog.alert(“未找到结果!”);
}
});
}

这只测试
name
元素的存在性,假设
name
元素缺失,其他元素(地址、扇区和联系人)也会缺失。如果您的应用程序不是这样,您可以选择执行
If
语句检查
list1
list2
,以及
list3

我放置
回调(list,list1,list2,list3)
else
子句中。它根据我为它键入的方法工作,也就是说,如果找到结果,它将打开一个新页面。但是
Dialog.alert(“未找到结果!”)不会出现。但幸运的是,它不像以前那样打开一个空页面,只是对话框没有打开,这真的很重要。@michael92,很抱歉。即使您没有显式发布此代码,我可能也应该假设您正在后台线程上运行HTTP连接代码。是这样吗?如果是这样,您应该确保在UI线程上发布您的
Dialog.alert()
调用。我已经更新了我的答案来说明这一点。上面的代码现在应该适合在后台/工作线程上运行。你是个救星。希望我能给你10分:)