Why is my XML reader reading every other element?

asp.net, c#, xml, xmlreader

Solution

Because both `.Read()` and `.ReadElementContentAsString()` (the parameterless overload) move the reader to the next node.

Change your `while` condition to:

while (!reader.EOF)

Then add:

else reader.Read();

Problem

I've built a very simple table that displays 4 columns and 4 rows. When the following code is executed it displays every other element in the .xml file. It does not discriminate per table row. It reads through without any problem and I have run xml validators so it not a syntax issue. ``` public partial class lblXmlOutput : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { XmlReaderSettings settings = new XmlReaderSettings(); settings.ConformanceLevel = ConformanceLevel.Document; settings.IgnoreWhitespace = true; settings.IgnoreComments = true; XmlReader reader = XmlReader.Create(Server.MapPath("Part2XMLex.xml"), settings); string result = ""; while (reader.Read()) { if (reader.IsStartElement("td")) result += reader.ReadElementContentAsString(); txtOutput.Text = result; } } } ```

Original source