using System;
using System.Linq;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
var s = "<Element><Element value=\"'hello&stack<overflow>'\" value=\"'hi&stack<over flow2 >'\"/></Element>";
var rx = @"((?:<[a-zA-Z][\w:-]*|\G(?!\A))\s+[^\s=<]*=)(""[^""]*"")";
var clean = Regex.Replace(s, rx, m =>
string.Format("{0}{1}", m.Groups[1].Value, m.Groups[2].Value.Replace("&", "&").Replace("<", "<").Replace(">", ">"))
);
Console.Write(clean);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCXZhciBzID0gIjxFbGVtZW50PjxFbGVtZW50IHZhbHVlPVwiJ2hlbGxvJnN0YWNrPG92ZXJmbG93PidcIiB2YWx1ZT1cIidoaSZzdGFjazxvdmVyIGZsb3cyID4nXCIvPjwvRWxlbWVudD4iOwoJCXZhciByeCA9IEAiKCg/OjxbYS16QS1aXVtcdzotXSp8XEcoPyFcQSkpXHMrW15ccz08XSo9KSgiIlteIiJdKiIiKSI7CgkJdmFyIGNsZWFuID0gUmVnZXguUmVwbGFjZShzLCByeCwgbSA9PiAKCQkJc3RyaW5nLkZvcm1hdCgiezB9ezF9IiwgbS5Hcm91cHNbMV0uVmFsdWUsIG0uR3JvdXBzWzJdLlZhbHVlLlJlcGxhY2UoIiYiLCAiJmFtcDsiKS5SZXBsYWNlKCI8IiwgIiZsdDsiKS5SZXBsYWNlKCI+IiwgIiZndDsiKSkKCQkpOwoJCUNvbnNvbGUuV3JpdGUoY2xlYW4pOwoJfQp9