从文件第一元素读取引用windows phone 8

时间:2013-08-31 14:57:12

标签: c# silverlight windows-phone-8 xmlreader

我正在关注Windows Phone 8开发的教程,还有一个额外的练习要完成,但我在某些方面陷入困境。我对Silverlight和.Net不是很有经验,所以我希望这不是一件小事。

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

我的程序如下: 首先,我将文件内容读取为字符串,然后将字符串传递给XmlReader。问题开始了。 xmlReader上的Read()函数在第1行第1列引发异常。因此,我检查“contents”字符串的值。在Text Visualizer窗口中,一切看起来都很正常,那就是内容字符串具有我输入文件的内容。但是当我在快速监视窗口中评估表达式contents.ElementAt(0)时,输出是“字符和内容.ElementAt(1)是<字符,我希望它是第0个元素。而且不够奇怪,当我在读取文件时删除第一个元素(如注释掉的内容中所示。移除(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)
            {

            }
        }

0 个答案:

没有答案