2012-06-17 95 views
1

1.什麼我想
得到適當的XML元素了xml文件爲什麼我不能使用LINQ來獲取WinRT中的XML元素?

的XML

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<tasks> 
    <task> 
    <title>Test0001</title> 
    <due>06/17/2012</due> 
    </task> 
    <task> 
    <title>Test0002</title> 
    <due>06/17/2012</due> 
    </task> 
    <task> 
    <title>Test0003</title> 
    <due>06/17/2012</due> 
    </task> 
<tasks> 

的2.什麼我的代碼

LINQ的塊:

 StorageFile file1 = await ApplicationData.Current.LocalFolder.GetFileAsync("BetterTask.xml"); 
     XDocument doc1 = new XDocument(); 
     using (var ReadStream1 = await file1.OpenStreamForReadAsync() as Stream) 
     { 
      doc1 = XDocument.Load(ReadStream1); 
     } 


     var data = from query in doc1.Descendants("task") 
        select new mytask 
        { 
         title = (string)query.Element("title"), 
         due = (string)query.Element("due") 
        }; 

     List<mytask> myTasks = data.ToList(); 
     myTodayListBox.ItemsSource = myTasks; 

的mytask類

public class mytask 
{ 
    public string title { get; set; } 
    public string due { get; set; } 
} 

3.什麼我得到
我在最後的塊中,當應用程序斷裂,我在LinQ中部分發現的設置中斷:
< 1>的[DOC1]爲整個XML內容
< 2>但[myTasks]是空的(計數= 0),....

4.爲什麼和怎樣解決
:(

+2

你的意思是'data'是空的還是'myTasks'是空的? 'data'將是空的,因爲它已被枚舉,但所有的值都應該在'myTasks'中。 – Zooba

+2

這實際上是你的XML嗎?你的XML有沒有使用命名空間? – svick

+0

是的,我的任務是空的,它的計數= 0 :( –

回答

1

我認爲你的案例中的變量doc1實際上是指文件本身。你將不得不這樣做:

doc1.Root.Descendants("task") 

得到它的工作。

+0

你是英雄! –

+0

不用擔心,歡迎你:) – Krishna

+0

但''XDocument'上的後代(「任務」)應該也能工作。這不應該改變任何東西。 – svick

相關問題