2010-03-25 6 views
1

J'essaie de lire dans un fichier XML simple, mais quand je lance le SQL, il retourne toujours Ennumeration Yeilded aucun résultat.Lecture de XML dans Silverlight Data Grid

Je ne sais pas ce que je vais mal.


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; 

Toute idée de ce que je l'ai fait mal ???

Voici un exemple du fichier XML également

<?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> 

Répondre

1

Vous avez le boîtier tort sur « XMLTag » dans la clause where devrait être « XMLTag ».

Voici ce que je pense que ce code devrait ressembler à: -

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") 
          }; 

Notes: -

  • XML est sensible à la casse si vous devez prendre soin avec les noms d'éléments
  • Évitez Descendents si vous le pouvez il est plus lent et peut conduire à des bogues
  • Votre xml est dans l'espace de noms sans nom, donc il n'y a pas besoin de bouder avec des espaces de noms
  • Il y a un implicite converti sur XName à partir de la chaîne, donc vous n'avez pas besoin de cela avec LocalName.
  • Il est explicitement converti sur XElement à divers types primitifs comme String, en utilisant un cas pour obtenir la valeur de l'élément, les éléments manquants résultent en null plutôt qu'une exception.
+0

La clause where était plus d'une faute de frappe que toute autre chose dans la publication. Cependant, je faisais beaucoup plus dur que nécessaire car il est beaucoup plus lisse maintenant! Merci beaucoup! – user301755