-8

How to read this type of XML in c#? Do you have any sample code?

<?xml version="1.0" encoding="ISO-8859-1" ?>
 <row rownum="1">
    <column colnum="1" name="PROJECT NUMBER">1</column>
    <column colnum="2" name="ROLE">Project Manager</column>
    <column colnum="3" name="FIRSTNAME">Angie</column>
    <column colnum="4" name="LASTNAME">Emanual</column>
</row><row rownum="2">
    <column colnum="1" name="PROJECT NUMBER">2</column>
    <column colnum="2" name="ROLE">Developer</column>
    <column colnum="3" name="FIRSTNAME">Ruha</column>
    <column colnum="4" name="LASTNAME">Rao</column>
</row>
Coder
  • 1,917
  • 3
  • 17
  • 33
SuperKings
  • 89
  • 1
  • 9
  • 6
    1) That's not valid XML. You have multiple root nodes. 2) We won't write your code for you. What have you tried so far and where are you having trouble? – Broots Waymb Dec 02 '16 at 14:33

1 Answers1

1

The following code will read xml fragments

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication29
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XmlReaderSettings settings = new XmlReaderSettings();
            settings.ConformanceLevel = ConformanceLevel.Fragment;

            XmlReader reader = XmlTextReader.Create(FILENAME,settings);
            List<object> results = new List<object>();
            while (!reader.EOF)
            {
                if (reader.Name != "row")
                {
                    reader.ReadToFollowing("row");
                }
                if (!reader.EOF)
                {
                    XElement row = (XElement)XElement.ReadFrom(reader);
                    results.Add(new object[] {
                        row.Elements("column").Select(y => new {
                            rowNum = (int)row.Attribute("rownum"),
                            colNum = (int)y.Attribute("colnum"),
                            colName = (string)y.Attribute("name"),
                            value = (string)y
                        }).FirstOrDefault()
                    });

                }
            }
        }

    }
}
jdweng
  • 33,250
  • 2
  • 15
  • 20