SIGN UP MEMBER LOGIN:    
ARTICLE

Serializing a DataSet Object as XML

Posted by Mukesh Kumar Articles | ADO.NET in C# June 28, 2011
You can serialize a populated DataSet object to an XML file by executing the DataSet object’s WriteXml method.
Reader Level:


You can serialize a populated DataSet object to an XML file by executing the DataSet object's WriteXml method.

In the following sample code we are creating a connection to AdventureWorks database and then populating DataSet with customer data using a DataAdapter and writing the contents of DataSet to an XML file named Customer.xml.

using System.Data;
using System.Data.SqlClient;

namespace DataSetToXML
{
    class Program
    {
        static void Main(string[] args)
        {
            string strFileName = @"..\..\Customer.xml";
 
            //Create Connection
            string strConnectString = "Data Source=(local);Integrated security=SSPI;Initial Catalog=AdventureWorks;";

            string strText = "SELECT Top 5 * FROM Sales.Customer Order By ModifiedDate Desc";

            // Create and fill a DataSet using a data adapter
            SqlDataAdapter objDataAdapter = new SqlDataAdapter(strText, strConnectString);
            DataSet objDataSet = new DataSet("CustomerData");
            // Fill DataSet with customer record
            objDataAdapter.Fill(objDataSet,"Customer");
            // Write DataSet contents to Customer.xml file
            objDataSet.WriteXml(strFileName, XmlWriteMode.IgnoreSchema);
        }
     
    }
}



The resulting XML file contents will look like this:

<?xml version="1.0" standalone="yes"?>
<CustomerData>
  <
Customer>
    <
CustomerID>6</CustomerID>
    <TerritoryID>4</TerritoryID>
    <AccountNumber>AW00000006</AccountNumber>
    <CustomerType>S</CustomerType>
    <rowguid>1a92df88-bfa2-467d-bd54-fcb9e647fdd7</rowguid>
    <ModifiedDate>2004-10-13T11:15:07.263+05:30</ModifiedDate>
  </Customer>
  <
Customer>
    <
CustomerID>5</CustomerID>
    <TerritoryID>4</TerritoryID>
    <AccountNumber>AW00000005</AccountNumber>
    <CustomerType>S</CustomerType>
    <rowguid>83905bdc-6f5e-4f71-b162-c98da069f38a</rowguid>
    <ModifiedDate>2004-10-13T11:15:07.263+05:30</ModifiedDate>
  </Customer>
  <
Customer>
    <
CustomerID>4</CustomerID>
    <TerritoryID>4</TerritoryID>
    <AccountNumber>AW00000004</AccountNumber>
    <CustomerType>S</CustomerType>
    <rowguid>ff862851-1daa-4044-be7c-3e85583c054d</rowguid>
    <ModifiedDate>2004-10-13T11:15:07.263+05:30</ModifiedDate>
  </Customer>
  <
Customer>
    <
CustomerID>3</CustomerID>
    <TerritoryID>4</TerritoryID>
    <AccountNumber>AW00000003</AccountNumber>
    <CustomerType>S</CustomerType>
    <rowguid>130774b1-db21-4ef3-98c8-c104bcd6ed6d</rowguid>
    <ModifiedDate>2004-10-13T11:15:07.263+05:30</ModifiedDate>
  </Customer>
  <
Customer>
    <
CustomerID>2</CustomerID>
    <TerritoryID>1</TerritoryID>
    <AccountNumber>AW00000002</AccountNumber>
    <CustomerType>S</CustomerType>
    <rowguid>e552f657-a9af-4a7d-a645-c429d6e02491</rowguid>
    <ModifiedDate>2004-10-13T11:15:07.263+05:30</ModifiedDate>
  </Customer>
</
CustomerData>

The XML document is well formed, and it's root node is called CustomerData. You can set the name of the root node by changing the DataSet object's DataSetName property. This property can be changed at any time. The DataRow objects have been represented as repeating elements in the XML. Each column is represented by an element within the data row element. You can change the format of the column data by assigning a new value to the columnMapping property of the DataColumn objects.

//set column mapping
objDataSet.Tables["Customer"].Columns["CustomerID"].ColumnMapping = MappingType.Attribute;
            objDataSet.Tables["Customer"].Columns["TerritoryID"].ColumnMapping = MappingType.Attribute;
            objDataSet.Tables["Customer"].Columns["AccountNumber"].ColumnMapping = MappingType.Attribute;
            objDataSet.Tables["Customer"].Columns["CustomerType"].ColumnMapping = MappingType.Attribute;
            objDataSet.Tables["Customer"].Columns["ModifiedDate"].ColumnMapping = MappingType.Attribute;
            objDataSet.Tables["Customer"].Columns["rowguid"].ColumnMapping = MappingType.Hidden;


In the last line we have used MappingType.Hidden to prevent the "rowguid" column from storing it's data.

Note : ColumnMapping property affects only the generated XML when writing to XML.

The resulting XML file contents will look like this :

<?xml version="1.0" standalone="yes"?>
<CustomerData>
  <
Customer CustomerID="6" TerritoryID="4" AccountNumber="AW00000006" CustomerType="S" ModifiedDate="2004-10-13T11:15:07.263+05:30" />
  <Customer CustomerID="5" TerritoryID="4" AccountNumber="AW00000005" CustomerType="S" ModifiedDate="2004-10-13T11:15:07.263+05:30" />
  <Customer CustomerID="4" TerritoryID="4" AccountNumber="AW00000004" CustomerType="S" ModifiedDate="2004-10-13T11:15:07.263+05:30" />
  <Customer CustomerID="3" TerritoryID="4" AccountNumber="AW00000003" CustomerType="S" ModifiedDate="2004-10-13T11:15:07.263+05:30" />
  <Customer CustomerID="2" TerritoryID="1" AccountNumber="AW00000002" CustomerType="S" ModifiedDate="2004-10-13T11:15:07.263+05:30" />
</CustomerData>

MappingType Enumeration Members

  1. Attribute : The column data is placed in an XML attribute.

  2. Element : The default. The column data is placed in an XML element.

  3. Hidden : The column data is not sent to the XML file.

  4. SimpleContent : The data is stored as text like the Element setting but without the additional element tag.

Login to add your contents and source code to this article
share this article :
post comment
 
Nevron Gauge for SharePoint
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. Visit DynamicPDF here
    Get 2 Months Free of ASP.NET Hosting for Only $4.95/month! Receive FREE MS SQL and MySQL Databases Including ASP.NET 4/3.5, MVC 3.0, Silverlight 4, Windows 2008/IIS 7.0 Plus FREE IIS 7 Modules. Host UNLIMITED ASP.NET Web Sites - Click Here!
Nevron Gauge for SharePoint
Become a Sponsor