2012-11-06 106 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; 
     } 

這是創建的XML。 XML created使用LINQ動態讀取XML

我想詞典列表 列表由{ 「農佈雷」, 「愛迪生加西亞」},{{ 「農佈雷」, 「亞伯拉罕·戈麥斯·加西亞」},{ 「semestre」, 「9」}}的

任何幫助,將不勝感激。

我面臨的問題: 1)如果沒有semsetre我不能跳過它。它創建IEnumerable。 2)獲取節點和值動態硬編碼。例如: var test2 = from abc.Descendants(「Nombre」)select p;

回答

2

試試這個:

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

試戴LINQPad。這工作。謝謝。 – StackOverflowVeryHelpful