0

インターネットからXMLファイルをダウンロードしてIsolatedStorageファイルに書き込むのが好きです。これが私が使っているコードです

public StreamReader readerForXml;

 private void find()
    {
       string filePath = "myFile.xml";
        using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
        {
    using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("People2.xml", FileMode.Create, myIsolatedStorage))
{



            XmlWriterSettings settings = new XmlWriterSettings();
             settings.Indent = true;
             using (XmlWriter writer = XmlWriter.Create(rawStream, settings))
             {
                 System.Uri targetUri = new System.Uri("http://dl.dropbox.com/u/29465448/ExchangeOffices.xml");
                 WebClient client = new WebClient();
                 try
                 {
                     client.DownloadStringAsync(targetUri);
                     client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);




writer.WriteString(sReader.ToString());
                    writer.Flush();
                }
                catch (Exception exception)
                {
                     MessageBox.Show(exception.Message);
                 }

}

}}

 void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
        sReader = new StreamReader(e.Result.ToString());

}

StreamReader sReaderに対してNullReferenceExceptionが発生しますが、誰かが同じ問題を抱えていましたか?ありがとう

4

1 に答える 1

0

すでにxmlデータを文字列として持っているので、それを読み取る必要はありません。IsolatedStorageに書き込みます。私は最近同じことをして、少しヘルパー関数を作りました。これをから呼び出して、client_DownloadStringCompleted渡すことができます。e.result"myFile.xml"

お役に立てれば。

    public void SaveXML(string xmldata, string filename)
    {
        using (var isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
        {
            using (var isoStream = new IsolatedStorageFileStream(filename, FileMode.Create, isolatedStorage))
            {
                var settings = new XmlWriterSettings();
                settings.ConformanceLevel = ConformanceLevel.Auto;
                using (XmlWriter writer = XmlWriter.Create(isoStream, settings))
                {
                    writer.WriteString(xmldata);
                    // Write the XML to the file.
                    writer.Flush();
                }
            }
        }
    }
于 2012-06-07T22:22:26.767 に答える