如何检查android中是否返回数据?

时间:2011-06-20 13:49:50

标签: android

我正在制作一个我必须进行XML解析的应用程序。

我必须检查用户是否能够访问新数据,然后我必须删除数据库中的旧数据。

对于上述内容,我使用以下代码:

try{
      URL url = new URL(address);
      /* Get a SAXParser from the SAXPArserFactory. */
      SAXParserFactory spf = SAXParserFactory.newInstance();
      SAXParser sp = spf.newSAXParser();
      /* Get the XMLReader of the SAXParser we created. */
      XMLReader xr = sp.getXMLReader();
      /* Create a new ContentHandler and apply it to the XML-Reader */
      xr.setContentHandler(this);
      /* Parse the xml-data from our URL. */
      InputSource is = new InputSource(url.openStream());
      //once data is obtained then delete the table.
      hb.executeSql("DELETE FROM Products,Category");
      xr.parse(is);
 }
 catch{
   e.printstacktrace();
 }

如果输入流中有错误,那么将抛出一个我正在捕获的异常,并且永远不会执行删除该表的代码。

逻辑是否正确?

4 个答案:

答案 0 :(得分:0)

你的拦截障碍是错误的。请参阅java中的处理异常。

语法是:

try{
// do your logic here.

}catch (Exception e){
e.printStackTrace();
}
finally{
// do something if there is or isnt an exception
}

如果存在异常,它将跳转到catch代码,这意味着您可以添加用于删除旧数据的代码作为catch块之前的最后一行,然后如果它上面的所有内容都运行而没有异常,您的代码将执行,否则在异常点,它将跳过catch块的所有内容,然后当catch完成后,它将转到finally块并离开try-catch。

答案 1 :(得分:0)

你几乎就在那里,如果url.OpenStream()抛出异常你会抓住它。但要完全放在安全的一面,你需要把

xr.parse(is); 

hb.exequteSql("Delete...");

因为xr.parse可能会抛出IO或SAX异常,即使发生这种情况,您的代码也会被删除。

for API,请参阅

http://download.oracle.com/javase/1.5.0/docs/api/org/xml/sax/XMLReader.html#parse(org.xml.sax.InputSource

另外我会建议你单独捕捉,IO和SAX例外。它可以帮助您轻松调试。

答案 2 :(得分:0)

我认为你想通过使用android SAXParser解析xml。这个链接包含如何解析xml

http://www.ctctlabs.com/index.php/blog/detail/parsing_xml_on_android/

答案 3 :(得分:0)

使用tbelow函数,此函数返回布尔值。

public boolean parseResultantXml(String handlerType,String inputXml){
        boolean result = false;
        SAXParserFactory spf = SAXParserFactory.newInstance();
        SAXParser sp;
        XMLReader xr = null;
        try {
            sp = spf.newSAXParser();

            xr = sp.getXMLReader();
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch (SAXException e) {
            e.printStackTrace();
        }

        SAXParsersUtil saxParserUtil = new SAXParsersUtil();

        RequiredParser rp = saxParserUtil.getParser(handlerType);
        xr.setContentHandler(rp);
        InputStream in = null;
        try {
            in = new ByteArrayInputStream(
                    ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + inputXml)
                            .getBytes("UTF-8"));
        } catch (IOException e) {
            e.printStackTrace();
            result = false;
        }
        try {
            xr.parse(new InputSource(in));
            result = true;
        } catch (IOException e) {
            e.printStackTrace();
            result = false;
        } catch (SAXException e) {
            e.printStackTrace();
            result = false;
        }
        return result;
    }