public static string getElement(string data,string element)
{
string elType = getElementType (element);
int startEl, endEl,tempEl,searchStart;
startEl = data.IndexOf (element);
if (startEl == -1)
return null;
searchStart = startEl+ element.Length;
int stack = 1;
do {
endEl = data.IndexOf ("<" + elType, searchStart);
tempEl = data.IndexOf ("</" + elType, searchStart);
int dClose = data.IndexOf("/>",searchStart);
if (dClose != -1 && dClose < tempEl && data.IndexOf("<",searchStart+1) > dClose)
{
if (stack == 1)
return data.Substring(startEl,dClose+1-startEl);
continue;
}
if (endEl != -1 && endEl < tempEl)
{
stack++;
searchStart = endEl+1;
}
else if(endEl>tempEl || endEl ==-1)
{
if (stack > 1)
{
stack--;
searchStart = tempEl+1;
continue;
}
if (tempEl == -1)
return null;
tempEl = data.IndexOf(">",tempEl);
return data.Substring(startEl,tempEl-startEl+1);
}
if (tempEl == -1)
return data.Substring (startEl);
} while(stack > 0);
return null;
}