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。
我想要一份字典列表 列表包括{“Nombre”,“Edison Garcia”},{{“Nombre”,“AbrahamGomezGarcía”},{“semestre”,“9”}}
任何帮助都将不胜感激。
我面临的问题: 1)如果没有semsetre我不能跳过它。它创建了IEnumerable。 2)动态地获取节点和值以进行硬编码。例如: var test2 =来自p中的abc.Descendants(“Nombre”)选择p;
答案 0 :(得分:2)
试试这个:
var testlinq = XElement.Load(sr);
var test = testlinq.Descendants("Alumno")
.Select(x => x.Descendants()
.ToDictionary(y => y.Name, y => y.Value )
).ToList();