2011-06-20 14 views
0

私は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(); 
} 

ん:

上記のために私は次のコードを使用していないしています実行される。

ロジックは正しいですか?

答えて

0

url.OpenStream()が例外をスローすると、ほとんど例外はありません。 xr.parseはIOやSAX例外をスローする可能性、そしてあなたのコードは、それが発生しても削除しますので、しかし、完全に安全側にあることを、あなたは

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

xr.parse(is); 

を配置する必要があります。

APIのために、

http://download.oracle.com/javase/1.5.0/docs/api/org/xml/sax/XMLReader.html#parse(org.xml.sax.InputSourceを参照してください)

また、私はあなたが別々に、IOやSAXの例外をキャッチすることをお勧めします。簡単にデバッグするのに役立ちます。

0

キャッチブロックが間違っています。 javaの例外処理を参照してください。

構文は次のとおりです。それはあなたがすべてのものならば、catchブロックの前の最後の行として、古いデータを削除するためのコードを追加することができることを意味し、キャッチコードをスキップします例外がある場合

try{ 
// do your logic here. 

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

例外が発生した場合は例外が発生します。そうでない場合は例外の時点ですべてをcatchブロックにスキップし、catchが完了するとfinallyブロックに移動してtry-catchを終了します。

0

使用tbelow機能を解析する方法を含んでリンク使用してXMLを解析したいと思います。

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; 
    } 
関連する問題