No Linq result for XML

I have the following code:

protected void Page_Load(object sender, EventArgs e) { XElement xml = XElement.Load(Server.MapPath("ArenasMembers.xml")); var query = from p in xml.Descendants("members") select new { Name = p.Element("name").Value, Email = p.Attribute("email").Value }; foreach (var member in query) { Response.Write("Employee: " + member.Name + " " + member.Email + "<br />"); } } 

That, using the guidance information in Visual Studio, it reads the XNL file correctly, however foreach does not output any of the records.

XML:

 <?xml version="1.0" encoding="utf-8" ?> <members> <member> <arena>EAA Office</arena> <memberid>1</memberid> <name>Jane Doe</name> <email> test@gmail.com </email> </member> <member> <arena>EAA Office</arena> <memberid>2</memberid> <name>John Bull</name> <email> jb@ehotmail.org </email> </member> <member> <arena>O2 Arena</arena> <memberid>3</memberid> <name>John Doe</name> <email> john.doe@o2arena.co.uk </email> </member> <member> <arena>O2 Arena</arena> <memberid>4</memberid> <name>Bernard Cribbins</name> <email> bernard@gmail.com </email> </member> <member> <arena>Colourline Arena</arena> <memberid>5</memberid> <name>John Bon Jovi</name> <email> jbj@gmail.com </email> </member> <member> <arena>NIA</arena> <memberid>6</memberid> <name>Rhianna</name> <email> skimpy@gmail.com </email> </member> </members> 

You see what is wrong?

+3
source share
2 answers

Established "members", try "member" ...

Descendants returns you all the children in the given Element , in your code you request members using name and email , which do not work.

Code example:

  var query = from p in xml.Descendants("member") select new { Name = p.Element("name").Value, Email = p.Element("email").Value }; 
+3
source

Changing the attribute ("email") in Element ("email") turned out great for me. verified, hopefully approved.

  public void XMLTEst() { var xml = @"<?xml version='1.0' encoding='utf-8' ?>" + " <members>" + " <member>" + " <arena>EAA Office</arena> " + " <memberid>1</memberid> " + " <name>Jane Doe</name> " + " <email> test@gmail.com </email> " + " </member> " + " <member> " + " <arena>EAA Office</arena> " + " <memberid>2</memberid> " + " <name>Linda Bull</name> " + " <email> linda.bull@eaaoffice.org </email> " + " </member> " + " <member> " + " <arena>O2 Arena</arena> " + " <memberid>3</memberid> " + " <name>John Doe</name> " + " <email> john.doe@o2arena.co.uk </email> " + " </member> " + " <member> " + " <arena>O2 Arena</arena> " + " <memberid>4</memberid> " + " <name>Bernard Cribbins</name> " + " <email> bernard@gmail.com </email> " + " </member> " + " <member> " + " <arena>Colourline Arena</arena> " + " <memberid>5</memberid> " + " <name>John Bon Jovi</name> " + " <email> jbj@gmail.com </email> " + " </member> " + " <member> " + " <arena>NIA</arena> " + " <memberid>6</memberid>" + " <name>Rhianna</name>" + " <email> skimpy@gmail.com </email>" + " </member>" + "</members>"; XElement xmlFile = XElement.Parse(xml); var query = from p in xmlFile.Descendants("member") select new { Name = p.Element("name").Value, Email = p.Element("email").Value }; foreach (var member in query) { Response.Write("Employee: " + member.Name + " " + member.Email + "<br />"); } } 
0
source

Source: https://habr.com/ru/post/1309518/


All Articles