我正在分析一个XML文件,在尝试查找一个包含撇号的节点时遇到问题。当商品名没有这个功能时,一切正常。我试过用不同的转义符替换撇号,但运气不太好。

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

// Things i have tried that did not work
// s.Replace("'", "''");
// .Replace("'", "\'");

XmlNode parent = root.SelectSingleNode(s);

我总是收到一个解释。正确的方法是什么?谢谢

最佳答案

你可以这样做:

XmlDocument root = new XmlDocument();

root.LoadXml(@"<itemDB><item name=""abc'def""/></itemDB>");

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

请注意逐字字符串文本“@”和双引号。
然后,您的代码将如下所示,无需替换任何内容:
var itemName = @"abc'def";

string s = @"/itemDB/item[@name=""" + itemName + @"""]";

10-04 23:29