अजपा योग आणि शांभवी मुद्रा ध्यान : श्वास, मंत्र, मुद्रा आणि ध्यान यांच्या सहाय्याने मनःशांती, एकाग्रता, चक्र संतुलन आणि कुंडलिनी जागृती. अधिक माहिती आणि आगामी तारखांसाठी येथे जा.

Reading and Writing XML Documents in .NET


XML provides platform independent, self-descriptive and very flexible way to represent your data. .NET has harnessed the capabilities of XML in variety of ways. In addition to providing W3C compatible classes .NET also provides additional classes which make XML document manipulation easy. In this article we will take a look at reading and writing XML documents using .NET specific classes.

XML Parsers

To access the content of an XML document you need to parse the document and reach to the specific parts of it. The software which allows you to do that is called as XML parser.

The parsers are of two types:

  • DOM parsers : These parsers built a tree of XML document in memory and allow navigation to various nodes and attributes.
  • SAX parsers : These parsers process XML document in sequential fashion. They have low memory footprint than DOM parsers.

In MSXML Ver.3, Microsoft has provided both of the parsers for our use. In .NET we have DOM parser matching closely with existing MSXML parser. The SAX parser has undergone some variation but provides similar functionality.

The pre-.NET parser i.e. MSXML provided classes and interfaces closely matching W3C recommendations. .NET also follows the same tradition but adds many easy to use and flexible ways to manipulate XML documents.

XML and .NET

XML related classes are available in System.XML namespace. In this article we will primarily discuss about .NET specific classes for reading and writing XML documents.

To read XML documents System.XML provides a class called XmlTextReader. This class is derived from XmlReader and provides easy access to various parts of XML document. This class can be thought as forward-only and read only cursor.

To write XML documents System.XML provides a class called XmlTextWriter. This class is derived from XmlWriter and allows quick writing of XML documents.

The methods provided by these classes are very easy to use and self explaining as compared to W3C DOM . This is mainly because these classes allow various methods to be called directly on themselves. They provide 'current node' for you to manipulate as opposed to W3C DOM classes where you have to track individual nodes. These classes do not require some thing like mydoc.ChildNodes(0).ChildNodes(1).... to access various attributes or content of the node. (You will see examples of using XmlTextReader and XmlTextWriter in later sections)

Using XmlTextReader Class

Now, we will see how to use XmlTextReader class.

  • First import the System.XML namespace. If you are using Visual Studio.NET then Add Reference to System.Xml.dll

e.g. In VB.NET

Imports System.Xml
  • Create instance of XmlTextReader class and load the XML document.

e.g. In VB.NET

dim reader as XmlTextReader
reader = new XmlTextReader ("c:\xml\books.xml")
  • Start reading the XML document

e.g. In VB.NET

do while (reader.Read())
'do some action here

The Read() method returns true if the node is successfully read else returns false. If node is successfully read, you can use properties and methods on the node to perform tasks like checking node type, access attributes, access content of node etc. You can call these methods directly on reader object.

Following table lists important properties of XmlTextReader class.

Property/Method Description
Read() method This method advances the 'cursor' to the next node. Returns true if node is read successfully. You can use this method in a While loop to process the document.
NodeType property This property returns the type of node i.e. Element, text node etc. The type is one from XmlNodeType enumeration.
Name property This property returns name of the current node
Value Property This property returns the content of the node.
ReadString(), Readxxxx().... These Readxxxx() kind of properties return content of node as a specific data type as opposed to value property.
GetAttribute("attb_name") method This method returns string value of given attribute
HasAttributes property This boolean property indicates whether the node has any attributes.

Using XmlTextWriter Class

Now, let us see how to use XmlTextWriter Class.

  • As usual you need to import System.Xml namespace.
  • Specify the file to which XmlTextWriter should write its content

e.g. In VB.NET

dim writer as xmltextwriter
writer=new xmltextwriter("d:\newcatalog.xml",null)

The second argument of the constructor indicates the encoding to be used. The value of null indicates default encoding (ASCII)

Now we can write various parts of XML document into the file. You will be calling various methods on the instance of XmlTextWriter class directly. Following table lists important methods of XmlTextWriter Class.

Property/Method Description
This method writes XML processing instruction to the document i.e. <?xml version="1.0" ?>
This method writes start tag of an element to the document
WriteEndElement() This method is called after calling WriteStartElement() and inserts corresponding end tag in the document
WriteAttribute("attb_name","attb_value") This method is nested with WriteStartElement() and WriteEndElement() methods and writes an attribute to the element
WriteElementString("tag_name","text_in_tag") This method creates a text only elements
Flush() This method flushes document buffer to disk. It is helpful if your document is too big.
Close() This method closes the XML document stream.

Bipin Joshi is an independent software consultant and trainer by profession specializing in Microsoft web development technologies. Having embraced the Yoga way of life he is also a meditation teacher and spiritual guide to his students. He is a prolific author and writes regularly about software development and yoga on his websites. He is programming, meditating, writing, and teaching for over 27 years. To know more about his ASP.NET online courses go here. More details about his Ajapa Japa and Shambhavi Mudra online course are available here.

Posted On : 21 April 2001