2011-04-11 105 views
1

就我所知,带有@的字符串需要一组双引号将引号插入到字符串中?向@字符串添加双引号

我已经试过这个原则,无济于事。下面这行工作,但如果我是来取代参数值的字符串,然后我似乎无法得到正确的汇编值

var node = doc.SelectSingleNode(@"//node[@label = ""Chemist Name""]/node[@label = ""John,Smith""]"); 

我尝试(其中我尝试了好几种版本,并在这里结束了,在这里我现在得到了!)

var node = doc.SelectSingleNode(@"//node[@label = " + ""+parentID+"" + "]/node[@label = " + ""+ name +"" + "]"); 

任何人都可以帮助我吗?

+0

VAR节点= @ “这是我的一个字符串以两个双引号 ”“ ”“” Console.WriteLine(节点);输出正确。你有没有尝试创建自己的XPath字符串并输出到控制台/调试器?您可以尝试转义XPath的正斜杠。 – tomasmcguinness 2011-04-11 12:23:00

回答

0

您错过了另一个双引号来关闭被附加的字符串,并且在每个包含“”的字符串之前还有@。

试试这个:

var node = 
doc.SelectSingleNode(@"//node[@label = """ + parentID + @"""]/node[@label = """ + name + @"""]"); 
+0

nope unfortunatley其编译错误 – ricki 2011-04-11 12:20:46

+0

更正了代码。 @在包含“”的每个字符串之前缺少@。请现在检查它。 – Chandu 2011-04-11 12:23:55

+0

是的,它的工作原理 - 谢谢 – ricki 2011-04-11 12:30:24

5

使用单引号:

var node = doc.SelectSingleNode 
       (@"//node[@label = 'Chemist Name']/node[@label = 'John,Smith']"); 

var node = doc.SelectSingleNode(
       string.format(@"//node[@label = '{0}']/node[@label = '{1}']" 
          , parentID, name)); 
0
var node = doc.SelectSingleNode(string.format(@"//node[@label = ""{0}""]/node[@label = ""{1}""]", parentId, name)); 
+1

您错过了几个引号我认为,“{0}” - >“”{0}“”把{0}放在引号中,并且“”{1} - >“”{ 1}“”出于同样的原因。 – 2011-04-11 12:20:10

0

编写扩展方法来扩展字符串:

public static string Quote(this string input) 
{ 
    return string.Format(@"""{0}""", input); 
} 

,然后用它如下:

var node = doc.SelectSingleNode(@"//node[@label = " + parentID.Quote() + "]/node[@label = " + name.Quote() + "]"); 

或者干脆:

var node = doc.SelectSingleNode(string.Format(@"//node[@label = {0}"]/node[@label = {1}"]",parentID.Quote(), name.Quote());