2012-06-17 3 views
1

1.Что Я хочу
получить соответствующие элементы XML из XML-файлаПочему я не могу использовать LINQ для получения элементов XML в WinRT?

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.Что I код

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.What Я получаю
Я поставил перерыв на последнем из блока, когда перерыв приложение, я нашел в части Linq:
< 1> кнопка [doc1] полон содержания XML
< 2> но [MyTasks] пусто (кол = 0), ....

4. Почему и как решить
:(

+2

Вы имеете в виду, что 'data' пуст или' myTasks' пуст? 'data' будет пустым, потому что он был перечислим, но все значения должны быть в' myTasks'. – Zooba

+2

Действительно ли это ваш XML? Разве ваш XML не использует пространства имен случайно? – svick

+0

yep, myTasks пуст, его счет = 0 :( –

ответ

1

Я думаю, что переменная doc1 в вашем случае фактически относится к самому документу. Вам нужно будет сделать что-то вроде:

doc1.Root.Descendants("task") 

, чтобы заставить его работать.

+0

Вы - герой! –

+0

Не беспокойтесь, пожалуйста! – Krishna

+0

Но 'Descendants (« task »)' on' XDocument' должен работать так же хорошо. Это ничего не меняет. – svick

Смежные вопросы