Parse XML to class and read data fromit

Hello experts,

could someone please help me with my begginers problem?

I code that reads XML and stores it into a class.

Now i am struuggeling how to read data from that class. What i need is accessing data in class based on
attribute "id".

My code

 class Program
    {
        public static string Document = "";
        
        static void Main(string[] args)
        {

            Program.XmlParse();

            Console.ReadLine();
        }



        public static void XmlParse()
        {
            XDocument doc = XDocument.Parse(Document);
            IEnumerable<XmlParseObject> result = from c in doc.Descendants("HotSpot")
                                                 select new XmlParseObject()
                                                 {
                                                     Id = (int)(c.Attribute("id")),
                                                     x = (float)c.Attribute("x"),
                                                     y = (float)c.Attribute("y"),
                                                     z = (float)c.Attribute("z")
                                                 }; 
        }
    
    }


    public class XmlParseObject
    {
        public float x { get; set; }
        public float y { get; set; }
        public float z { get; set; }
        public int Id  { get; set; }
    }

Open in new window


And my XML file:

<?xml version="1.0" encoding="utf-8"?>
<start>
	 <HotSpot id="1" x="67216.14" y="-75172.24" z="-2984.153"/>
	 <HotSpot id="2" x="66326.78" y="-74404.68" z="-3172.191"/>
	 <HotSpot id="3" x="66220.13" y="-73542.97" z="-3286.478"/>
</start>

Open in new window


Thank you!
TagyourareitAsked:
Who is Participating?
 
Fernando SotoRetiredCommented:
Hi Tagyourareit;

I made changes to the program and made comments in the code.

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

namespace ConsoleApplication3
{
    class Program
    {
        // I changed this from a string to a XDocument so the document can be read from the file system
        public static XDocument doc = null;

        static void Main(string[] args)
        {
            Program.XmlParse();

            Console.ReadLine();
        }


        public static void XmlParse()
        {
            // Load the XML from the file system seeming it is a file.
            // I have named the xml file HotSpot.xml and because it has
            // no path info it looks for the file in the bin direcotry
            doc = XDocument.Load("HotSpot.xml");

            IEnumerable<XmlParseObject> result = from c in doc.Descendants("HotSpot")
                                                 select new XmlParseObject()
                                                 {
                                                     Id = (int)(c.Attribute("id")),
                                                     x = (float)c.Attribute("x"),
                                                     y = (float)c.Attribute("y"),
                                                     z = (float)c.Attribute("z")
                                                 };

            // Enumerate through the XmlParseObject objects and displey the info 
            foreach (XmlParseObject obj in result)
            {
                Console.WriteLine("{0,-4}{1,-10}{2,-11}{3,-8}",
                    obj.Id, obj.x, obj.y, obj.z);
            }
        }

    }


    public class XmlParseObject
    {
        public float x { get; set; }
        public float y { get; set; }
        public float z { get; set; }
        public int Id { get; set; }
    }
}

Open in new window

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.