c#解析xml with和撇号抛出exception

我正在解析一个xml文件,并在尝试查找其中包含撇号的节点时遇到问题。 当项目名称没有这一切时,一切正常。 我试过用不同的逃避字符替换撇号但是没有太多运气

string s = "/itemDB/item[@name='" + itemName + "']"; // Things i have tried that did not work // s.Replace("'", "''"); // .Replace("'", "\'"); XmlNode parent = root.SelectSingleNode(s); 

我总是收到XPathException。 这样做的正确方法是什么。 谢谢

你可以这样做:

 XmlDocument root = new XmlDocument(); root.LoadXml(@""); XmlNode node = root.SelectSingleNode(@"itemDB/item[@name=""abc'def""]"); 

请注意逐字字符串文字’@’和双引号。

您的代码将如下所示,无需替换任何内容:

 var itemName = @"abc'def"; string s = @"/itemDB/item[@name=""" + itemName + @"""]"; 

对于撇号,用'替换它'