Encoding XPath Expressions with both single and double quotes
Wow, you all sure are making this complicated. Why not just do this?
public static string XpathExpression(string value)
{
if (!value.Contains("'"))
return '\'' + value + '\'';
else if (!value.Contains("\""))
return '"' + value + '"';
else
return "concat('" + value.Replace("'", "',\"'\",'") + "')";
}
.NET Fiddle & test
Though it certainly won't work in all circumstances, here's a way to sidestep the problem:
doc.DocumentElement.SetAttribute("searchName", name);
XmlNode n = doc.SelectNodes("//review[@name=/*/@searchName]");