[英]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.