2012-11-06 2 views
0
Document miXML = new XDocument(

      new XElement("Alumnos", 
           new XElement("Alumno", 
            new XAttribute("NoControl", "05231104"), 
            new XElement("Nombre", "Edison García")), 


           new XElement("Alumno", 
            new XAttribute("NoControl", "05231106"), 
            new XElement("Nombre", "Abraham Gomez García"), 
            new XElement("Semestre", "9")), 

           new XElement("Alumno", 
            new XAttribute("NoControl", "05231108"), 
            new XElement("Nombre", "Alejandre Carvajal"), 
            new XElement("Semestre", "7")), 

           new XElement("Alumno", 
            new XAttribute("NoControl", "06231110"), 
            new XElement("Nombre", "Luis Armando"), 
            new XElement("Semestre", "10")) 
        ) 
      ); 


     StringReader sr = new StringReader(miXML.ToString()); 
     var testlinq = XElement.Load(sr).Elements(); 

     foreach(var abc in testlinq){ 

     var test2 = from p in abc.Descendants("Nombre") select p; 
     var test3 = from p in abc.Descendants("Semestre") select p; 
     } 

Il s'agit du fichier XML créé. XML createdLecture dynamique XML à l'aide de LINQ

Je veux une liste de dictionnaire liste se compose de { "nom", "Edison Garcia"}, {{ "nom", "Abraham Gomez García"}, { "semestre", "9"}}

Toute aide serait appréciée.

Problèmes auxquels je suis confronté: 1) s'il n'y a pas de semsetre je ne peux pas l'ignorer. Il crée IEnumerable. 2) Obtenir le nœud et la valeur dynamiquement installés du codage en dur. Par exemple: var test2 = à partir de p dans abc.Descendants ("Nombre") sélectionnez p;

Répondre

2

Essayez ceci:

var testlinq = XElement.Load(sr); 
var test = testlinq.Descendants("Alumno") 
        .Select(x => x.Descendants() 
           .ToDictionary(y => y.Name, y => y.Value) 
        ).ToList(); 
+0

Essayé LINQPad. Cela marche. Merci. – StackOverflowVeryHelpful