Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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
Android 将XML/JSON响应缓存到应用程序中的最佳方法。全文文件?_Android_Xml_Json_Web Services_Caching - Fatal编程技术网

Android 将XML/JSON响应缓存到应用程序中的最佳方法。全文文件?

Android 将XML/JSON响应缓存到应用程序中的最佳方法。全文文件?,android,xml,json,web-services,caching,Android,Xml,Json,Web Services,Caching,我目前正在我的各种应用程序中使用XML或JSON Web服务 我只是想知道什么是将这些答案缓存在文本文件中最简单的方法 我一直在考虑数据库,但这似乎过于复杂了 所以,我想做的是 要在手机内存中存储这些xml/JSON文件,我应该这样做吗 String FILENAME = "MyXmlFile"; String string = "hello world!"; FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVAT

我目前正在我的各种应用程序中使用XML或JSON Web服务

我只是想知道什么是将这些答案缓存在文本文件中最简单的方法

我一直在考虑数据库,但这似乎过于复杂了

所以,我想做的是

  • 要在手机内存中存储这些xml/JSON文件,我应该这样做吗

    String FILENAME = "MyXmlFile";
    String string = "hello world!";
    
    FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
    fos.write(string.getBytes());
    fos.close();  
    
  • 在我的应用程序的onCreate中,我想解析这个文件。由于所有的教程都展示了如何从web URL解析文件,我从未找到解析内部文本文件的方法。有人对这一点有什么建议吗


  • 谢谢。

    您可以应用SharedReferences,它也是一个XML文件。只需首先解析JSON/XML,提取所有键/值对,然后写入pref文件。下次加载onCreate()时,只需从pref重新加载键/值。 此示例可能会给您一个开始:

    这将与编写XML/JSON相反。
    使用openFileInput获取FileInputStream。将流读入字符串,然后对其进行解析。

    另一种方法是使用很棒的库。它允许您使用ETag检查响应是否未修改(HTTP 304未修改)。如果未修改,则使用文件缓存中的JSON,否则请求获取新资源

    File latest = new File("/data/cache.json");
    HttpRequest request = HttpRequest.get("http://google.com");
    //Copy response to file
    request.body(latest);
    //Store eTag of response
    String eTag = request.eTag();
    //Later on check if changes exist
    boolean unchanged = HttpRequest.get("http://google.com")
                                   .ifNoneMatch(eTag)
                                   .notModified();
    

    对于在Java中解析JSON,我强烈推荐Google的GSON——是的,GSON非常棒。关于首选项中的成对键/值,我认为这很难,因为我不知道内存中的项目数,我也可以将此数字存储在首选项中,但我将首先尝试Hamant Sharma解决方案,如果不适合,将尝试您的解决方案。