Wednesday, July 1, 2009

Converting DataTable/Dateset to XML and vice-versa

[quote]
My question is how can i convert this datatable into XML and save it to my project directory
[/quote]

This is how u Convert ur DataTable in XMl(u can not directly serilize datatable..u have to fille it in Dataset)

DataTable dt = new DataTable();
dt.Columns.Add("roomCode");
dt.Columns.Add("roomNo");
dt.Columns.Add("hotelCode");



DataRow dr;

dr = dt.NewRow();
dr["roomCode"] = "SGL";
dr["roomNo"] = "101";
dr["hotelCode"] = "486";



dt.Rows.Add(dr);

dr = dt.NewRow();
dr["roomCode"] = "2";
dr["roomNo"] = "DBL";
dr["hotelCode"] = "988";


dt.Rows.Add(dr);

DataSet ds = new DataSet();
ds.Tables.Add(dt);

XmlElement xE = (XmlElement)Serialize(ds);
string strXml = xE.OuterXml.ToString();

Here the strXml will provide u the xml.

Now to store this xml In ur Project Direcory u can do something like this.

XmlDocument xDoc = new XmlDocument();
xDoc.LoadXml(strXml);
xDoc.Save(Server.MapPath("XML\\myFile.xml")); //XML is the folder name and myFile.xml is ur new file name

[quote]
How can i call it back from its location into any dataset, datatable
[/quote]

U can desirilize it and convert it back to object.

DataSet newDs = (DataSet)Deserialize(xDoc.DocumentElement,typeof(DataSet));

[quote]
How can i Query this xml
[/quote]

No can u tell me that if u wan to query this xml after it is dserilized or when it is serilized?


also the Serilize and deserilize metrhods are are following.


///
/// Serialize given object into XmlElement.
///

/// Input object for serialization.
/// Returns serialized XmlElement.
#region Serialize given object into stream.
public XmlElement Serialize(object transformObject)
{
XmlElement serializedElement = null;
try
{
MemoryStream memStream = new MemoryStream();
XmlSerializer serializer = new XmlSerializer(transformObject.GetType());
serializer.Serialize(memStream, transformObject);
memStream.Position = 0;
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(memStream);
serializedElement = xmlDoc.DocumentElement;
}
catch (Exception SerializeException)
{

}
return serializedElement;
}
#endregion // End - Serialize given object into stream.






///
/// Deserialize given XmlElement into object.
///

/// xmlElement to deserialize.
/// Type of resultant deserialized object.
/// Returns deserialized object.
#region Deserialize given string into object.
public object Deserialize(XmlElement xmlElement, System.Type tp)
{
Object transformedObject = null;
try
{
Stream memStream = StringToStream(xmlElement.OuterXml);
XmlSerializer serializer = new XmlSerializer(tp);
transformedObject = serializer.Deserialize(memStream);
}
catch (Exception DeserializeException)
{

}
return transformedObject;
}
#endregion // End - Deserialize given string into object.
///
/// Conversion from string to stream.
///

/// Input string.
/// Returns stream.
#region Conversion from string to stream.
public Stream StringToStream(String str)
{
MemoryStream memStream = null;
try
{
byte[] buffer = Encoding.UTF8.GetBytes(str);//new byte[str.Length];
memStream = new MemoryStream(buffer);
}
catch (Exception StringToStreamException)
{
}
finally
{
memStream.Position = 0;
}

return memStream;
}
#endregion // End - Conversion from string to stream.

2 comments: