这似乎应该是一件容易的事,但我遇到了一些重大问题。我正在尝试使用HAP解析特定标记。我使用Firebug找到我想要的XPath并提出// * [@ id =“atfResults”]。我相信我的问题是“因为信号是一个新字符串的开始和结束。我已经尝试将它作为文字字符串,但我有错误。我附加了函数
public List<string> GetHtmlPage(string strURL)
{
// the html retrieved from the page
WebResponse objResponse;
WebRequest objRequest = System.Net.HttpWebRequest.Create(strURL);
objResponse = objRequest.GetResponse();
// the using keyword will automatically dispose the object
// once complete
using (StreamReader sr =
new StreamReader(objResponse.GetResponseStream()))
{//*[@id="atfResults"]
string strContent = sr.ReadToEnd();
// Close and clean up the StreamReader
sr.Close();
/*Regex regex = new Regex("<body>((.|\n)*?)</body>", RegexOptions.IgnoreCase);
//Here we apply our regular expression to our string using the
//Match object.
Match oM = regex.Match(strContent);
Result = oM.Value;*/
HtmlDocument doc = new HtmlDocument();
doc.Load(new StringReader(strContent));
HtmlNode root = doc.DocumentNode;
List<string> itemTags = new List<string>();
string listingtag = "//*[@id="atfResults"]";
foreach (HtmlNode link in root.SelectNodes(listingtag))
{
string att = link.OuterHtml;
itemTags.Add(att);
}
return itemTags;
}
}
答案 0 :(得分:1)
你可以逃脱它:
string listingtag = "//*[@id=\"atfResults\"]";
如果你想使用原始字符串,那就是:
string listingtag = @"//*[@id=""atfResults""]";
正如您所看到的,原始字符串在这里并没有真正带来好处。
但是,您可以使用:
HtmlNode link = doc.GetElementById("atfResults");
这也会稍快一点。
答案 1 :(得分:0)
你试过这个:
string listingtag = "//*[@id='atfResults']";