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"、 "AbrahamGomezGarcí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 に答える