ARTICLE

The Xmlwriter Classes

Posted by Dinesh Beniwal Articles | ADO.NET in VB.NET December 10, 2009
In this article I will explain you how to read an Xmlwriter Classes in ADO.NET.
 
Reader Level:

As you've seen in the Microsoft .NET and XML section of this article, the XmlWriter class contains methods and properties to write to XML documents, and XmlTextWriter and XmlNodeWriter come from the XmlWriter class (see figure 6-7).

Figure-6.7.gif

Figure 6-7. XmWriter classes

Besides providing a constructor and three properties (WriteState, XmlLang, and XmlSpace), the XmlWriter classes have many writexxx methods to write to XML documents. This section discusses some of these class methods and properties and uses them in examples of the XmlTextWriter and XmlNodeWriter classes. XmlTextWriter creates a write object and writes to the document. The XmlTextWriter constructor can take three types of inputs: a string, a stream, or a TextWriter.

Xml Writer properties

The XmlWriter class contains three properties: WriterState, XmlLang, and XmlSpace. The WriteState property gets the current state of the XmlWriter class. The values could be Attributes, Start, Element, Content, closed, or Prolog. The return value WriteState.Start means the Write method is not yet called. In otnher cases, it represents what is being written. For example, the return value WriteState.Attribute means the Attribute value has written. WriteState.Close represents that the stream has closed by calling Close method.

Writing XML Items

As discussed earlier, an XML document can have any types of items including elements, Comments, attributes, and white spaces. Although it's not possible to describe all the Writexxx methods here. I'll cover some of them.

The WriteStateDocument and WriteEndDocument methods open and close a document for writing, respectively. You must open a document before you start writing to it. The WriteComment method writes comment to a document. It takes only one string type of argument. The WriteString method writes a string to a document. With the help of WriteString, you can use the WriteStartElement and WriteEndElement method pair to write an element to a document. The WriteStartAttribute and WriteEndAttribute pair writes an attribute. WriteNode is another write method, which writes XmlReader to a document as a node of the document. The following example summarizes all these methods and creates a new XML document with some items in it such as elements, attributes, strings, comments, and so on. (See listing 6-13 in the next section.)

In this example, you create a new XML file, c:\xmlWriterText.xml, using XmlTextWriter:


        ' Create a new file c:\ xmlWriterTest.Xml
        Dim writer As New XmlTextWriter("C:\xmlWriterTest.xml", Nothing)


After that, add comments and elements to the document using Writexxx methods. After that you can read the books.xml xml file using Xml TextReader and add its elements to xmlWriterTest.xml using XmlTextWriter:


        ' Create an XmlText Reader to read books. xml
        Dim reader As New XmlTextReader("@c:" & vbBack & "ooks.xml")

        While reader.Read()
            If reader.NodeType = XmlNodeType.Element Then
                ' Add node.xml to xmlWriterTest .xml using WriteNode
                writer.WriteNode(reader, True)
            End If
        End While


Listing 6-13 shows an example of using XmlWriter to create a new document and write its items. This program creates a new XML document, xml writer Test, in the C:\root directory.

Listing 6-13 XmlWriter example


Imports System
Imports System.Xml

Class XmlReaderSamp

    Private Shared Sub Main(ByVal args As String())
        ' Create a new File c:\xmlWriterTest.xml
        Dim writer As New XmlTextWriter("C:\ xmlWriterTest.xml", Nothing)

        ' opens the document
        writer.WriteStartDocument()

        ' write comments
        writer.WriteComment("This Program uses XmlTextWriter.")
        writer.WriteComment("Developed by :Mahesh Chand.")
        writer.WriteComment("= = = = = = = = = = = = = = =")

        ' write first element
        writer.WriteStartElement("root")
        writer.WriteStartElement("r", "RECORD", "urn: record")

        ' write next element
        writer.WriteStartElement("FirstName", " ")
        writer.WriteString("Mahesh")
        writer.WriteEndElement()

        ' write one more element
        writer.WriteStartElement("LastName", " ")
        writer.WriteString("Chand")
        writer.WriteEndElement()

        ' Create an XmlTextReader to read books.xml
        Dim reader As New XmlTextReader("C:\Documents and Settings\PuranMAC\My Documents\Visual Studio 2008\Projects\ConsoleApplication2\ConsoleApplication2\XMLFile1.xml")

        While reader.Read()
            If reader.NodeType = XmlNodeType.Element Then
                ' Add node.xml to xmlWriterTest.xml using WriteNode
                writer.WriteNode(reader, True)
            End If
        End While

        ' Ends the document.
        writer.WriteEndDocument()
        Console.ReadLine()
        writer.Close()
        Exit Sub
    End Sub
End Class

Note: In Listing 6-13 you write output of the program to a file. If you want to write your output directly on the console, pass Console.Out as the file name when create an XmlTextWriter object. For example: XmlTextWriter writer = new XmlTextWriter (Console.Out);

When you open C: \ xmlWriterTest.Xml in a browser, the output of the program looks like Listing 6-14.

Listing 6-14. Output of XmlWriterSample.cs class


<?
xml version="1.0" ?>
- <!--  This program uses xmlTextWriter.  -->
- <!--  Developed by: Mahesh chand. -->
- <!--  = = = = = = =  = = = = = =  -->
- <root>
  - <r:RECORD xmlns:r="urn:record">

    <
FirstName>Mahesh</FirstName>
    <
LastName>Chand</LastName>
    - <bookstore>
      - <book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">

        <
title>the Autobiography of Benjamin Franklin</title>
        - <author>

          <
First-name>Benjamin</First-name>
          <
last-name>Franklin</last-name>
        </
author>
        <
price>8.99</price>
      </
book>
      -<book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">

        <
title>The confidence man</title>
        - <author>

          <
first-name>Herman</first-name>
          <
last-name>Malville</last-name>
        </
author>
        <
price>11.99</price>
      </
book>
      -<book genre="Philosophy" publicationdate="1991" ISBN="1-861001-56-6">

        <
title>The Gorgias</title>
        - <author>

          <
name>Plato</name>
        </
author>
        <
price>9.99</price>
      </
book>
    </
bookstore>
  </
r:RECORD>
</
root>

The close method

You use the Close method when you're done with the XmlWriter object, which closes the stream.

Conclusion

Hope this article would have helped you in understanding Xmlwriter Classes. See other articles on the website also for further reference.

Login to add your contents and source code to this article
share this article :
post comment
 
Nevron Diagram
Become a Sponsor
PREMIUM SPONSORS
  • ceTE software specializes in components for dynamic PDF generation and manipulation. The DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and new content to existing PDF documents from within your applications.
    Finally – a virtual platform that delivers next-generation Windows Server 2008 Hyper-V virtualization technology from a managed hosting partner you can truly depend on. Visit www.maximumasp.com/max for a FREE 30 day trial. Hurry offer ends soon. Climb aboard the MaxV platform and take advantage of High Availability, Intelligent Monitoring, Recurrent Backups, and Scalability – with no hassle or hidden fees. As a managed hosting partner focused solely on Microsoft technologies since 2000, MaximumASP is uniquely qualified to provide the superior support that our business is built on. Unparalleled expertise with Microsoft technologies lead to working directly with Microsoft as first to offer IIS 7 and SQL 2008 betas in a hosted environment; partnering in the Go Live Program for Hyper-V; and product co-launches built on WS 2008 with Hyper-V technology.
Nevron Diagram
Become a Sponsor