0

我正在关注有关 windows phone 8 开发的教程,还有一个额外的练习要完成,但我在某个点上卡住了。我对 Silverlight 和 .Net 不是很有经验,所以我希望这不是一件小事。

基本上,我会阅读一个示例数据文件。该文件放置在应用程序的安装目录中。它是 xaml 格式的文件,我将使用 XmlReader 对其进行解析。我知道那些东西不是很好(已安装目录中的文件操作等),但我这样做是为了锻炼,因此我没有努力使它成为一个好的应用程序。

我的程序如下:首先,我将文件内容读入一个字符串,并将该字符串传递给 XmlReader。问题从这里开始。xmlReader 上的 Read() 函数在第 1 行第 1 列抛出异常。因此,我检查了“内容”字符串的值。在 Text Visualizer 窗口中,一切似乎都很正常,即内容字符串包含我放入输入文件的内容。但是当我在快速监视窗口中评估表达式 contents.ElementAt(0) 时,输出是一个 " 字符和 contents.ElementAt(1) 是一个 < 字符,我希望它是第 0 个元素。而且不够奇怪,当我在读取文件时删除第一个元素时(如注释掉的 contents.Remove(0,1) 所示,我没有得到异常。但是我在 Text Visualizer 中看到的是相同的。我可以继续我的练习方法,但我真的很想找出这种奇怪行为的原因。我认为这可能是 VS 调试器中的一个错误,但在这种情况下,我不应该在运行时遇到异常。

        string contents;
        try
        {
            StorageFolder localFolder = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync("SampleData");
            StorageFile file = await localFolder.GetFileAsync(filename);
            using (IRandomAccessStream textStream = await file.OpenReadAsync()) 
            {
                using (DataReader textReader = new DataReader(textStream))
                {
                    uint length = (uint)textStream.Size;
                    await textReader.LoadAsync(length);
                    contents = textReader.ReadString(length);
                    //contents = contents.Remove(0, 1);
                }
            }
        }
        catch 
        {
            contents = "TODO catch exception";
        }

        return contents;

xml解析:

            string filePath = "SampleData.xaml";

        string contents = await FileHelper.ReadFile(filePath);

        // parse xaml string

        using (XmlReader xmlReader = XmlReader.Create ( new StringReader (contents) ) )
        {
            try
            {
                while (xmlReader.Read())
                {
                    string temp = xmlReader.ReadContentAsString();
                }
            }
            catch (Exception e)
            {

            }
        }
4

0 回答 0