Pages

Tuesday, December 31, 2013

Convert XmlNodeList to DataTable


XmlDocument xmlDoc = new XmlDocument();
XmlNodeList nodes;
string xmlResp;
// convert string to stream            
byte[] byteArray = Encoding.ASCII.GetBytes(xmlResp);
MemoryStream stream = new MemoryStream(byteArray);
xmlDoc = ConvertStreamToXMLDocument(stream);
nodes = xmlDoc.GetElementsByTagName("Items");
DataTable dt = Utility.ConvertXmlNodeListToDataTable(nodes);

public static DataTable ConvertXmlNodeListToDataTable(XmlNodeList xnl)
{
    DataTable dt = new DataTable();
    int TempColumn = 0;

    foreach (XmlNode node in xnl.Item(0).ChildNodes)
    {
        TempColumn++;
        DataColumn dc = new DataColumn(node.Name, System.Type.GetType("System.String"));
        if (dt.Columns.Contains(node.Name))
        {
            dt.Columns.Add(dc.ColumnName = dc.ColumnName + TempColumn.ToString());
        }
        else
        {
            dt.Columns.Add(dc);
        }
    }

    int ColumnsCount = dt.Columns.Count;
    for (int i = 0; i < xnl.Count; i++)
    {
        DataRow dr = dt.NewRow();
        for (int j = 0; j < ColumnsCount; j++)
        {
            //dr[j] = xnl.Item(i).ChildNodes[j].InnerText;
            if (xnl.Item(i).ChildNodes[j] != null)
                dr[j] = xnl.Item(i).ChildNodes[j].InnerText;
            else
                dr[j] = null;
        }
        dt.Rows.Add(dr);
    }
    return dt;
}

Read values from cookies

const string COOKIE_NAME = "xyz";
string subject = "";
if (HttpContext.Current.Request.Cookies[COOKIE_NAME] != null)
{
    allClaims = new Dictionary<String, String>();

    HttpCookie authCookie = HttpContext.Current.Request.Cookies[COOKIE_NAME];

    NameValueCollection col = new NameValueCollection(authCookie.Values);
    String[] keyNames = col.AllKeys;
    foreach (string key in keyNames)
    {
        allClaims.Add(key, col.GetValues(key)[0]);
    }

    subject = authCookie["subject"].ToString();
}   

Write DataTable to Excel

public void WriteToExcel(Excel.Worksheet worksheet, DataTable dataTable)
{
    var columns = dataTable.Columns.Count;
    var rows = dataTable.Rows.Count;
    var startCell = (Excel.Range)worksheet.Cells[1, 1];
    var endCell = (Excel.Range)worksheet.Cells[rows + 1, columns];
    var writeRange = (Excel.Range)worksheet.get_Range(startCell, endCell);
    var data = new object[rows + 1, columns];
    //Header                   
    for (var column = 0; column < columns; column++)
    {
        data[0, column] = dataTable.Columns[column].ColumnName;
    }
    for (var row = 1; row <= rows; row++)
    {
        for (var column = 0; column < columns; column++)
        {
            data[row, column] = dataTable.Rows[row - 1][column].ToString();
        }
    }
    worksheet.Rows.Clear();
    writeRange.Value = data;
    worksheet.Name = "test";   
}

Convert JSON to XML

Run below command in Visual Studio for the project
PM> Install-Package Newtonsoft.Json

XmlDocument xmlDoc = new XmlDocument();
xmlDoc = JsonConvert.DeserializeXmlNode("{records:{items:" + xmlResp + "}}");

Convert string to stream to XML document

// convert string to stream       
XmlDocument xmlDoc = new XmlDocument();    
byte[] byteArray = Encoding.ASCII.GetBytes(xmlResp);
MemoryStream stream = new MemoryStream(byteArray);
xmlDoc = ConvertStreamToXMLDocument(stream);
private XmlDocument ConvertStreamToXMLDocument(Stream stream)
{
    XmlDocument xmlDocument = new XmlDocument();
    xmlDocument = new XmlDocument();
    //load into XDocument
    XDocument xDocument = XDocument.Load(stream);

    //scrub the namespaces out!
    xDocument.Descendants().Attributes().Where(x => x.IsNamespaceDeclaration).Remove();
    // convert to xml document
    using (var xmlReader = xDocument.CreateReader())
    {
        xmlDocument.Load(xmlReader);
    }

    // remove default namespace
    xmlDocument.LoadXml(xmlDocument.OuterXml.Replace(xmlDocument.DocumentElement.NamespaceURI, ""));
    xmlDocument.DocumentElement.RemoveAllAttributes();

    return xmlDocument;
}

Calling & receiving response of any webpage C# - ASP.Net

public void CallWebPage(string url)
{
    WebRequest request = WebRequest.Create(url);
    //WebProxy proxy = new WebProxy("fresproxy1:8080");
    //proxy.UseDefaultCredentials = true;
    //request.Proxy = proxy;
    request.Headers.Add("Key", Value);
    request.Headers.Add("Key", Value);
    WebResponse objWebResponse = request.GetResponse();
    Stream objWebStream = objWebResponse.GetResponseStream();
    string response = "";
    string OAuthToken="";
    using (StreamReader objStreamReader = new StreamReader(objWebStream))
    {
        response = objStreamReader.ReadToEnd();
    }
    //if response is json - deserialize that into dictionaries for easier operation - System.Web.Extensions.dll
   JavaScriptSerializer desSSO = new JavaScriptSerializer();
   IDictionary userInfo = desSSO.Deserialize<Dictionary<string, string>>(response);
   foreach (DictionaryEntry entry in userInfo)
   {
       if (entry.Key.ToString() == "abc")
       {
           OAuthToken = entry.Value.ToString();
       }
   }
}