Skip to content

Instantly share code, notes, and snippets.

@aturgarg
Created July 29, 2012 08:53
Show Gist options
  • Save aturgarg/3196814 to your computer and use it in GitHub Desktop.
Save aturgarg/3196814 to your computer and use it in GitHub Desktop.
Linq XML ( object[] list)
class Program
{
static void Main(string[] args)
{
Program p = new Program();
//Console.WriteLine(p.linqStringList());
Console.WriteLine(p.linqObjectArrayList());
Console.ReadLine();
}
/// <summary>
/// Built XML using Linq ( from List of string )
/// </summary>
/// <returns></returns>
protected string linqStringList()
{
try
{
List<string> lst = new List<string>();
for (int i = 0; i < 10; i++)
{
lst.Add((i + 1).ToString());
}
XElement xe = new XElement("XMLs",
from str in lst
select (new XElement("Tag",str)
));
return xe.ToString();
}
catch
{ }
return "";
}
/// <summary>
/// Built XML using Linq ( from List of object[] )
/// </summary>
/// <returns></returns>
protected string linqObjectArrayList()
{
List<object[]> lst = new List<object[]>();
for (int i = 1; i < 11; i++)
{
lst.Add(new object[] { (i ).ToString() + " ", (i + 10).ToString() + " ", (i + 20).ToString() + " " });
}
//this work but has same tag names
/*
XElement xe = new XElement("XMLs",
from str in lst
select (new XElement("nodes",
from s in str
select ( new XElement("Tag", s)))
));
* */
XElement xe = new XElement("XMLs",
from str in lst
select (new XElement(XElemStrObject(str))
));
return xe.ToString();
}
/// <summary>
/// To create string, to pass in XElement value
/// this cause problem in create xml tag
/// </summary>
/// <param name="objArr"></param>
/// <returns></returns>
private string XElemObject(object[] objArr)
{
StringBuilder str = new StringBuilder();
for (int i = 0; i < objArr.Length; i++)
{
str.Append(new XElement("tag"+(i + 1).ToString(), objArr[i]));
}
return str.ToString();
}
/// <summary>
/// create XElement, and ca give our own tag names
/// </summary>
/// <param name="objArr"></param>
/// <returns></returns>
private XElement XElemStrObject(object[] objArr)
{
StringBuilder str = new StringBuilder();
XElement xse = new XElement("node");
for (int i = 0; i < objArr.Length; i++)
{
XElement xeTemp = new XElement("tag" + (i + 1).ToString(), objArr[i]);
xse.Add(xeTemp);
}
return xse;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment