xml - 如何将 StreamReader 转换为 XDocument?

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

我在 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>

如何解决?

最佳答案

看看你在做什么:

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

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

  • 将其读取为一个字符串,然后使用该字符串设置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);
        ...
    }
}

关于xml - 如何将 StreamReader 转换为 XDocument?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15402834/

相关文章:

c# - 连接到 HTTPS 的 WebClient 在某些电话设备上出现 NotFound 错误

windows - WP7知道在 "navigated to"页面按下后退键

c# - 如何在针对模式验证的 XDocument 中查找无效的 XML 节点(XmlSchemaValidationException.SourceObject 为空)

c# - 从 URL 读取 XML 文件,结果为空

python - 我如何使用 python 针对 dtd 验证 xml?

java - 如何在 java 中修复未闭合标记的 XML

windows-phone-7 - 如何在 Windows Phone 7 Silverlight 应用程序中保存应用程序状态(变量值、按钮状态等)?

linq-to-xml - 有没有一种方法可以仅使用Linq-to-XML查询中的本地名称来检索元素?

xml - 使用 XSLT 将 XML 文件转换为 RDF/XML

c# - 从 SQL 查询 c# 创建树/XML 结构