Thursday, June 2, 2011

Read specific nodes from an XML File

The following article discusses how to read an XML file. 
The sample XML file that i have used is also attached below.
I have used XmlTextReader for reading. 
The   while (reader.Read()) return true until all the nodes of the document are read. 
reader.ReadToFollowing("repeat_element");
is used to jump to the specified node, incase you are not interested in any other node and want to read only that node or its child nodes. 
reader.Name returns the name of the element and reader.ReadString() will return its value/innerText.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml;

namespace sample
{
    class Xml_Reader
    {
        FileStream fileStream;
        string fileName = string.Empty;
        static int count = 0;
        
        public void Read()
        {
            fileName = @"D:\Yasser Files\sample.xml";
            fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read);

            string temp_variable = "";

            using (XmlTextReader reader = new XmlTextReader(fileStream))
            {
                // To jump to the node where we want to begin our search from.
                reader.ReadToFollowing("repeat_element");

                while (reader.Read())
                {
                    if(reader.NodeType == XmlNodeType.Element)
                    {
                        switch (reader.Name)
                        {
                            case "interested_element1":
                                {
                                    temp_variable += "--"+ reader.ReadString();
                                    break;
                                }
                            case "interested_element2":
                                {
                                    temp_variable += "--" + reader.ReadString();
                                    break;
                                }
                            case "interested_element3":
                                {
                                    temp_variable += "--" + reader.ReadString();
                                    break;
                                }
                            case "interested_element4":
                                {
                                    temp_variable += "--" + reader.ReadString();
                                    break;
                                }
                            case "interested_element5":
                                {
                                    temp_variable += "--" + reader.ReadString();
                                    break;
                                }
                        }//end of switch
                    }//end of if loop.
                }//end of reader.
            }
        }
    }
}

<?xml version="1.0" encoding="utf-8" ?>
<myroot>
  <repeat_element>
    <nt_interested_element1>aa</nt_interested_element1>
    <interested_element1>yasser</interested_element1>
    <nt_interested_element2>cc</nt_interested_element2>
    <interested_element2>sachin</interested_element2>
    <nt_interested_element3>eee</nt_interested_element3>
    <interested_element3>sehwag</interested_element3>
    <somelevel>
      <somelevelDown>
        <deep>
          <interested_element4>dhoni</interested_element4>
          <interested_element5>raina</interested_element5>
        </deep>
      </somelevelDown>
    </somelevel>
  </repeat_element>
  <repeat_element>
    <nt_interested_element1>11</nt_interested_element1>
    <interested_element1>ramesh</interested_element1>
    <nt_interested_element2>33</nt_interested_element2>
    <interested_element2>suresh</interested_element2>
    <nt_interested_element3>55</nt_interested_element3>
    <interested_element3>sonu</interested_element3>
    <somelevel>
      <somelevelDown>
        <deep>
          <interested_element4>monu</interested_element4>
            <interested_element5>ronu</interested_element5>
        </deep>
      </somelevelDown>
    </somelevel>
  </repeat_element>
</myroot>

0 comments:

Post a Comment

 

2011 ·Code-Studio by yrus.