2010-11-13 49 views
0

我想用c#找到一个html元素,但我正在努力与转义字符。我下面的代码是一个HTML,并试图找到它内的元素,但开始不返回IndexOf。我究竟做错了什么?转义字符头痛

//html im trying to find <table cellspacing="0" cellpadding="0" class="cbParent" summary="Results from your search" id="searchResultsTbl"> 

     string table = "<table cellspacing=\"0\" cellpadding=\"0\" class=\"cbParent\" summary=\"Results from your search\" id=\"searchResultsTbl\">"; 
     int start = html.IndexOf(table); 
+0

为什么你不使用''而不是“”? – 2010-11-13 03:05:52

+0

我试过了string table = @“

“;没有快乐 – 2010-11-13 03:10:47

+0

这很可能是真正的问题是你使用的是字符串处理,当你应该使用一个能够处理HTML DOM的库 - 一个你可以使用的地方,哦,某种XPath或CSS选择器找到基于ID的元素。如果IndexOf不匹配,则它不匹配并且与转义字符无关(除非您认为字符串文字被转换为字符串对象)。也许你试图在一个地方有而不是?哎呀。如果文档符合XML标准,那么XDocument或XmlDocument真的很容易使用。 – 2010-11-13 03:16:02

回答

3

可以代替双引号

的使用单引号
"<table cellspacing='0' cellpadding='0' class='cbParent' summary='Results from your search' id='searchResultsTbl'>" 

说明:
HTML属性可能有单引号' '或双引号" "

+0

@pst感谢您的更新 – 2010-11-13 03:13:22

+0

已返回的HTML包含双引号,这是否重要? – 2010-11-13 03:14:14

+0

这是一种简单的表示方法,但是由于它是一个IndexOf(完全是另一个问题!),它稍微改变了语义。 – 2010-11-13 03:15:14

-1

您确定它在html字符串中吗?

您也可以尝试在字符串文字之前放置一个@,在这种情况下,将使用""而不是\"完成双引号。

+0

嗨大卫,是它的整个HTML页面。我曾尝试使用@之前,但似乎并没有帮助 – 2010-11-13 03:06:06

+0

这(逐字字符串)将只是''''结构''' - 不知道这是一个改进。 - – 2010-11-13 03:12:59

0

您可以使用

path = @"c:\mypath\temp.dir" 

逐字使用它。使用双引号两次逃脱它

s = @"Say ""Hello"""