Click here to Skip to main content
Licence 
First Posted 31 Aug 2003
Views 251,317
Downloads 5,070
Bookmarked 65 times

Reading an XML file using .NET

By Tahir Nasir | 31 Aug 2003
An article on how to read an xml file into an ASP.NET page
12 votes, 30.8%
1
5 votes, 12.8%
2
4 votes, 10.3%
3
8 votes, 20.5%
4
10 votes, 25.6%
5
2.92/5 - 39 votes
μ 2.92, σa 2.83 [?]

Introduction

In this article one will see how we can read and XML file it our ASP.NET application, this trick is use full for making custom configuration files for your application or just reading data stored in an xml file.

Overview

This code uses the XmlTextReader object to read the disk file into the XmlDocument object. the XmlTextReader object has very similar functionality to the StreamReader and BinaryReader objects, except that it is specifically designed to read XML file. The XmlTextReader object also has other XML-specific features. For example the WhitespaceHandling property setting in the code tells it not to create nodes for extra whitespace in the XML file.

The code uses the DocumentElement property of the XmlDocument object to find the node at the root of the tree representation of the XML document. After that, we just recursively call the procedure that adds information about the node to the ListBox control.

The code also deals with attributes. Attribues nodes are not included in the ChildNodes collection of a node in the XmlDocument object. Instead, you can use the Attributes property of the XmlNode object to get a collection of attribute nodes only. The code uses an XmlNamedNodeMap object to hold this collection; this object can hold an arbitrary collection of XmlNode objects of any type.

Code listing

    private void btnLoad_Click(object sender, System.EventArgs e)
    {
      XmlTextReader reader = new XmlTextReader(
        Server.MapPath("mycompany.xml"));
      
      reader.WhitespaceHandling = WhitespaceHandling.None;
      XmlDocument xmlDoc = new XmlDocument();
      //Load the file into the XmlDocument
      xmlDoc.Load(reader);
      //Close off the connection to the file.
      reader.Close();
      //Add and item representing the document to the listbox
      lbNodes.Items.Add("XML Document");
      //Find the root nede, and add it togather with its childeren
      XmlNode xnod = xmlDoc.DocumentElement;
      AddWithChildren(xnod,1);
    }
    
    private void AddWithChildren(XmlNode xnod, Int32 intLevel)
    {
      //Adds a node to the ListBox, togather with its children.
      //intLevel controls the depth of indenting
      XmlNode xnodWorking;
      String strIndent = new string(' ',2 * intLevel);
      //Get the value of the node (if any)
      string strValue = (string) xnod.Value;
      if(strValue != null)
      {
        strValue = " : " + strValue;
      }
      //Add the node details to the ListBox
      lbNodes.Items.Add(strIndent + xnod.Name + strValue);

      //For an element node, retrive the attributes
      if (xnod.NodeType == XmlNodeType.Element)
      {
        XmlNamedNodeMap mapAttributes = xnod.Attributes;
        //Add the attributes to the ListBox
        foreach(XmlNode xnodAttribute in mapAttributes)
        {
          lbNodes.Items.Add(strIndent + " " + xnodAttribute.Name + 
            " : " + xnodAttribute.Value);
        }
        //If there are any child node, call this procedrue recursively
        if(xnod.HasChildNodes)
        {
          xnodWorking = xnod.FirstChild;
          while (xnodWorking != null)
          {
            AddWithChildren(xnodWorking, intLevel +1);
            xnodWorking = xnodWorking.NextSibling;
          }
        }
      }
    }
  }

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Tahir Nasir

Web Developer

United States United States

Member


Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
Questionhow can I read xml and store it in a string Pinmemberkaushik24020:57 12 Sep '11  
SuggestionUse System.Xml.Serialization Pinmemberjrberger11:07 30 Jun '11  
GeneralMy vote of 1 Pinmembernicachipal8:19 10 Jul '10  
GeneralProblem when parsing a remote file Pinmemberpersquarefeet1:45 19 Mar '09  
GeneralGreat Article Pinmemberguineapig23147:34 4 Nov '08  
GeneralConvert java to c# Pinmembermayuri1233:18 17 Jun '08  
GeneralThanks... PinmemberCuneyQ4:58 14 Jun '07  
GeneralGOOD ONE Pinmembertkjbbs22:35 1 Jun '07  
Generalproblem in using x-path Pinmembersusree3:52 23 Sep '03  
QuestionUse the Read method? Pinmemberajoshi1:39 3 Sep '03  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web02 | 2.5.120210.1 | Last Updated 1 Sep 2003
Article Copyright 2003 by Tahir Nasir
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid