如何从webservice获取数据并将其存储在android中的sqlite上?

如何从webservice获取数据并将其存储在android中的sqlite上?,android,web-services,sqlite,android-contentprovider,ksoap2,Android,Web Services,Sqlite,Android Contentprovider,Ksoap2,我使用KSOAP2从webservice获得了响应。响应xml如下所示: <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns0="http://wsclient.xyz.com/

我使用KSOAP2从webservice获得了响应。响应xml如下所示:

<env:Envelope
  xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:ns0="http://wsclient.xyz.com/">
 <env:Body>
  <ns0:getResponseData>

   <ns0:result>
    <ns0:wef> 12-June-2002 </ns0:wef>      
    <ns0:sblanguage> SOME TEXT.....</ns0:sblanguage>
    <ns0:payscale> 15700-400-19900 </ns0:payscale>
    <ns0:entrytakenby  xsi:nil="1"/>
    <ns0:entryHeader> PAY FIXATION</ns0:entryHeader>
    <ns0:postcadre   xsi:nil="1"/>    
   </ns0:result>

   <ns0:result>
    <ns0:wef> 20-JuLY-2010 </ns0:wef>      
    <ns0:sblanguage> SOME MORE TEXT.....</ns0:sblanguage>
    <ns0:payscale> 19700-600-22900 </ns0:payscale>
    <ns0:entrytakenby> CLERK </ns0:entrytakenby>
    <ns0:entryHeader> INCREMENT </ns0:entryHeader>
    <ns0:postcadre   xsi:nil="1"/>    
   </ns0:result>

   // .... hundreds of such results

   </ns0:getResponseData>
 </env:Body>
</env:Envelope>

2002年6月12日
一些文字。。。。。
15700-400-19900 
薪酬固定
2010年7月20日
更多的文字。。。。。
19700-600-22900 
店员
定期的加薪
// .... 数百个这样的结果
我的目标是在一个片段中以表格形式显示所有这些信息。我已经为片段创建了UI,并为片段编写了CustomCursorAdapter。我已经成功地在片段上显示了虚拟数据(不是来自webservice)。现在我想知道

1) 如何从上述数据创建游标,以便在片段的CustomCursorAdapter中使用该游标

2) 我知道,我必须使用sqlite来存储这些数据,这样一旦从web获取数据,就可以在没有internet连接的情况下使用这些数据。我对实现这两个目标的步骤感到困惑

请在这方面给我一些建议。我已经通过了一些链接,但可以得到足够的信息来链接所有这些片段


编辑:我不需要代码,但是要实现的策略会很有帮助。我是否需要解析xml并将数据存储在对象中?然后使用对象填充数据库?这种情况是如何实现的?

我认为您应该创建一个
AsyncTask
,下载所有数据,然后在onPostExecute中,您可以将数据保存到数据库中。通常,在从XML或Json进行反序列化时,会创建与数据关联的对象。因此,您可以创建将这些数据插入数据库的帮助器方法。 然后,您可以使用光标在
片段中的
列表视图(或其他)中显示数据


您还可以尝试一种不同的策略:您可以为数据库创建一个侦听器,以便在表中添加数据时自动更新UI。为此,你可以考虑使用。因此,当您的AsyncTask下载数据并将其放入数据库时,会自动填充ListView。

这可能就是您可以进行此操作的方式

1.将xml解析为所需的对象。 这个链接应该可以帮助您解析响应。(我估计您使用AJAX或其他方法从web服务获得响应,并且您使用的是异步任务等等)

2.然后可能创建一个类,比如XMLObjects,并将所需数据存储为该类的对象。并将其存储到sqllite数据库中(我想使用一些setter和getter方法)

  • 因为您希望脱机使用此功能。您可以让应用程序在一天中的某个时间点或应用程序启动时获取请求,并将其存储在sql lite数据库中。如果您需要知道如何将它们存储为对象或任何其他数据库函数,请参阅本教程

  • 并且可以使用自己的方法游标访问数据库


  • 我认为唯一不同的部分是第一步,您必须解析xml,因为大多数人更喜欢使用JSON。剩下的步骤应该非常简单,并且非常基本。希望这有帮助。如果您需要任何特定步骤的更多细节,请发表评论。

    有些人可能会投票反对该问题,认为该问题属于一般性问题,或者认为该问题缺乏尝试或出于任何原因。但这是一个编程问题,让一些初学者陷入瘫痪。因此,如果你能在投票后给出答案,我将不胜感激