如何将解析的Xml输入源保存为.xml文件,以便在Android中进行脱机解析

时间:2012-07-05 12:11:26

标签: android makefile xml-parsing

我希望将给定的webservice url保存为用于脱机sax解析的xml文件。

在线我正在使用SAX Parser来解析给定的URL。

URL sourceUrl = new URL("http://www.example.com/mobile/eventinfo.php?id=20);    
InputSource inputSource = new InputSource(sourceUrl.openStream());
inputSource.setEncoding("ISO-8859-1");

为此,我从上面获取了url的输入源,现在我想将该输入源保存为.xml文件以进行脱机解析。

此处用户必须首次在线加载应用程序。在应用程序内部,我们提供离线设施。如果用户将应用程序设置为离线,则输入必须将xml文件保存在本地内存中。

如果用户在离线状态下启动应用程序,则应用程序必须解析保存的xml文件中的数据。

如果用户在线启动应用程序,则必须从网址解析数据。

任何人都可以帮助我或分享知识

我正在生成xml文件,如下面的代码

try {
    URL url = new URL(urlString);
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setDoInput(true);
    connection.setDoOutput(true);
    connection.setUseCaches(false);
    connection.connect();
    int responseCode = connection.getResponseCode();
    if(responseCode == 200){
        InputStream inputStream = connection.getInputStream();
        int size = connection.getContentLength();
        FileOutputStream fileOutputStream = new FileOutputStream(new File(getCacheDir(),filename));
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        String ch = null;
        while((ch = bufferedReader.readLine()) != null){
            fileOutputStream.write(ch.getBytes());
        }
    }else {

    }
}

但是它在

处引发了一个Exception as NetworkonMainThreadException
  connection.connect();

提前感谢。

1 个答案:

答案 0 :(得分:0)

我认为你第一次在sdcard中生成文件(包含ur xml),每次检查sdcard中是否存在该文件,然后解析相同的文件,否则从url加载数据并生成xml文件。

希望你能得到我说的话