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

我想要一个字典列表,其中包含 {"Nombre","Edison Garcia"} , {{"Nombre", "Abraham Gomez García"} , {"semestre","9"}}

任何帮助,将不胜感激。

我面临的问题:1)如果没有 semsetre 我无法跳过它。它创建 IEnumerable。2)动态获取节点和值而不是硬编码。例如: var test2 = from p in abc.Descendants("Nombre") select p;

4

1 回答 1

2

试试这个:

var testlinq = XElement.Load(sr);   
var test = testlinq.Descendants("Alumno")
                   .Select(x => x.Descendants()
                                 .ToDictionary(y => y.Name, y => y.Value )
                   ).ToList();
于 2012-11-06T15:18:43.330 回答