【问题标题】:How to convert StreamReader to XDocument?如何将 StreamReader 转换为 XDocument?
【发布时间】:2013-03-14 06:43:52
【问题描述】:

我在IsolatedStorage 中存储XML 数据,同时从IsolatedStorage 读取数据。我需要将StreamReader 转换为XDocument。 以下代码我用来将 StreamReader 转换为 XDocument。我收到如下错误:“缺少根元素”

using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
            {                   
                IsolatedStorageFileStream isoFileStream = myIsolatedStorage.OpenFile("AllHeadLine.xml", FileMode.Open);
                using (StreamReader reader = new StreamReader(isoFileStream))
                {                        
                    displayXmlData.Text = reader.ReadToEnd();                       
                    XDocument offlineHeadline = XDocument.Load(reader);

                }
            }

编辑:XML 内容

<category><catname>ರಾಜ್ಯ</catname><img>http://www.udayavani.com/udayavani_cms/gall_content/2013/3/2013_3$thumbimg113_Mar_2013_235853890.jpg</img><heading>ನನ್ನ ಮಗನ ಬಗ್ಗೆ ಹೆಮ್ಮೆ ಇದೆ</heading><navigateurl>some Url </navigateurl></category>

如何解决?

【问题讨论】:

  • xml 是什么样的?
  • 我正在获取 XML 数据,我需要将 StreamReader 转换为 XDocument .@Jens Kloster

标签: xml windows-phone-7 linq-to-xml streamreader isolatedstorage


【解决方案1】:

看看你在做什么:

using (StreamReader reader = new StreamReader(isoFileStream))
{                        
    displayXmlData.Text = reader.ReadToEnd();                       
    XDocument offlineHeadline = XDocument.Load(reader);
}

您正在通过ReadToEndStreamReader 中读取所有数据,然后您正尝试将其加载到XDocument 中。没有更多数据可读取!几个选项:

  • 将其读取为字符串,然后使用该字符串设置displayXmlData.Text 解析为带有XDocument.Parse 的文档。 (如果 WP7 不支持,请使用 StringReaderXDocument.Load
  • 完全摆脱ReadToEnd 调用,无需设置displayXmlData.Text 即可生活。目前尚不清楚这是必需的还是只是为了诊断目的。

除非您真的需要逐字逐句的文件文本,否则我实际上会完全避免创建StreamReader,而是直接从Stream 加载。这也将让 LINQ to XML 进行编码检测。

using (var storage = IsolatedStorageFile.GetUserStoreForApplication())
{                   
    using (var stream = storage.OpenFile("AllHeadLine.xml", FileMode.Open))
    {
        XDocument offlineHeadline = XDocument.Load(stream);
        ...
    }
}

【讨论】:

    猜你喜欢
    • 2014-08-27
    • 2014-01-17
    • 2014-05-22
    • 2011-08-17
    • 2012-01-26
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    相关资源
    最近更新 更多