65.9K
CodeProject is changing. Read more.
Home

Creating a simple XML Parser alternative to LINQ

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0 vote)

Oct 11, 2013

CPOL
viewsIcon

5750

Creating a simple XML Parser alternative to LINQ Here is a simple way to parse an XML string, and store its element name and values in a Hashtable

Creating a simple XML Parser alternative to LINQ

Here is a simple way to parse an XML string, and store its element name and values in a Hashtable which you can call its key using the GetAttribute() method.

    public class Parse
    {
        Hashtable attributes;

        public void ParseURL(string xmlData)
        {
            try
            {
                string errorString = string.Empty;
                byte[] byteArray = new byte[xmlData.Length];
                System.Text.ASCIIEncoding encoding = new
                System.Text.ASCIIEncoding();
                byteArray = encoding.GetBytes(xmlData);
                attributes = new Hashtable();

                // Load the memory stream
                MemoryStream memoryStream = new MemoryStream(byteArray);

                memoryStream.Seek(0, SeekOrigin.Begin);

                XmlTextReader reader = new XmlTextReader(memoryStream);
                while (reader.Read())
                {
                    switch (reader.NodeType)
                    {
                        case XmlNodeType.Element:
                            string strURI = reader.NamespaceURI;
                            string strName = reader.Name;
                            if (reader.HasAttributes)
                            {
                                for (int i = 0; i < reader.AttributeCount; i++)
                                {
                                    reader.MoveToAttribute(i);
                                    if (!attributes.ContainsKey(reader.Name))
                                    {
                                        attributes.Add(reader.Name, reader.Value);
                                    }
                                }
                            }

                            break;

                        default:
                            break;
                    }
                }
            }
            catch (XmlException e)
            {
                Console.WriteLine("error occured: " + e.Message);
            }

        }

        public string GetAttribute(string key)
        {
            try
            {
                return attributes[key].ToString();
            }
            catch (XmlException e)
            {
                return "error occured: " + e.Message;
            }
        }

  }