Чтение XML в сетку данных Silverlight - PullRequest
1 голос
/ 25 марта 2010

Я пытаюсь прочитать в простом XML-файле, однако, когда я запускаю SQL, он всегда возвращает Ennumeration Yeilded без результатов.

Не уверен, что я иду не так.


XDocument xmlInfo = XDocument.Parse(xmlContent);
XNamespace ns = xmlInfo.Root.Name.Namespace;

 XNamespace ns = xmlBuilderInfo.Root.Name.Namespace;
 var Info = from XMLtagin xmlInfo.Descendants()
            where XMLtag.Name.LocalName == "XMLtag" 
            select new Information
                              {
                                  Name = XMLtag.Element("name").Value.ToString(),
                                  Region = XMLtag.Element("negion").Value.ToString()
                              };

            InfoList.SelectedIndex = -1;
            InfoList.ItemsSource = Info;

Есть идеи, что я сделал неправильно ???

Вот также пример XML-файла

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<NameAndRegionDataSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <XMLTag>
  <Name>Content</Name>
  <Region>Peterborough</Region>
 </XMLTag>
 <XMLTag>
  <Name>Content</Name>
  <Region>Medicine Hat</Region>
 </XMLTag>

1 Ответ

1 голос
/ 25 марта 2010

Вы неправильно указали регистр в "XMLtag" в предложении where должно быть "XMLTag".

Вот как я думаю, этот код должен выглядеть следующим образом: -

XDocument xmlInfo = XDocument.Parse(xmlContent);

var Info = from XMLtag in xmlInfo.Root.Elements("XMLTag")
        select new Information
                          {
                              Name = (string)XMLtag.Element("Name"),
                              Region = (string)XMLtag.Element("Region")
                          };

Примечания: -

  • XML чувствителен к регистру, поэтому вам нужно позаботиться об именах элементов
  • Избегайте Descendents, если можете, это медленнее и может привести к ошибкам
  • Ваш xml находится в пространстве имен без имени, поэтому нет необходимости копаться в пространствах имен
  • Существует неявное преобразование на XName из строки, поэтому вам не нужно это где с LocalName.
  • В XElement явно преобразуются в различные примитивные типы, такие как String, с использованием регистра для получения значения элемента, отсутствующие элементы приводят к нулю, а не к исключению.
...