簡體   English   中英

具有隔離存儲的Linq To XML-根元素丟失

[英]Linq To XML with Isolated Storage - Root Element is missing

我嘗試使用Linq to XML從隔離的存儲中讀取Xml文件。

我的文件包含上面的代碼:

<?xml version="1.0" encoding="utf-8"?>
<lense>
   <days>14</days>
   <date>5/29/2012</date>
   <useToday>True</useToday>
   <dateUseToday />
</lense>

我寫這樣的查詢:

using (var store = IsolatedStorageFile.GetUserStoreForApplication())
{
   using (IsolatedStorageFileStream isoStream = new  IsolatedStorageFileStream("Lenses.xml", FileMode.Open, store))
   {
      var custs = from c in XElement.Load(isoStream).Elements("Lense")c;
   }
}

但是我有以下錯誤:

根元素丟失

我不知道為什么? 你能解釋一下並幫助我嗎?


謝謝你的幫助!

但是,當我嘗試以下代碼時,我遇到了相同的根元素錯誤。

var custs = from c in XDocument.Load(isoStream).Elements("Lense")
            select c;

我使用以下代碼來查看我的xml文件存儲在隔離存儲中:

using (StreamReader reader = new StreamReader(store.OpenFile("Lenses.xml", FileMode.Open)))
{
    MessageBox.Show(reader.ReadToEnd());
}

xml文件僅包含一個元素:

<?xml version="1.0" encoding="utf-8"?>
<lense>
   <days>14</days>
   <date>5/29/2012</date>
   <useToday>True</useToday>
   <dateUseToday />
</lense>

感謝幫助 !


我知道我可以使用XmlReader操作xml文檔:

using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("Lenses.xml", FileMode.Open, store))
{
   isoStream.Position = 0;
   XmlReader xmlReader;
   xmlReader = XmlReader.Create(isoStream);
   xmlReader.MoveToContent();
   while (xmlReader.Read())
   {
      switch (xmlReader.NodeType)
      {
         case XmlNodeType.Element:
         {
            if (xmlReader.Name == "date")
            {
               // Code here
            }
         }
      }
   }
}

它可以工作,但是如果可能的話,我更喜歡使用linq而不是xml解決方案。

謝謝你的幫助 !

由於您要加載完整的XML文檔,請嘗試:

XDocument.Load(isoStream)

代替:

XElement.Load(isoStream)

如所建議的,你還需要Elements("lense")lense小寫。

請注意,如果您的文件實際上包含以下內容:

<?xml version="1.0" encoding="utf-8"?>
<lense>
   <days>14</days>
   <date>5/29/2012</date>
   <useToday>True</useToday>
   <dateUseToday />
</lense>
<lense>
   <days>14</days>
   <date>5/29/2012</date>
   <useToday>True</useToday>
   <dateUseToday />
</lense>

它將失敗,並顯示多個根元素錯誤。 不同的錯誤,類似的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM