XPath (v1) contains no way to encode expressions.
If you only have single OR double quotes then you can use expressions such as
//review[@name="Bob's Pizza"]
//review[@name='"Pizza" Pam']
But if you have BOTH e.g [Fred's "Fancy Pizza"] then you have to use something like this Escaping Strings in XPath (C++) to generate
//review[@name=Concat("Fred's ",'"Fancy Pizza"')]
Anyone have a function in c# to do this?
Some links that are close
EDIT: A few answers have suggested escaping ' with '
and " with "
but although this makes sense it does not work; try it using the XML fragment:
<review name="Bob's Pizza"/>
and the xpath
//review[@name='Bob's Pizza']
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("'", "',\"'\",'") + "')";
}