2011-02-06 50 views
2

我在源代碼中有多個元素,看起來像這樣。Html選擇C#

<a id="thread_title_158922" href="#"></a> 

問題是我不知道標題後面的數字。 所以我想這句法:

 HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 
     doc.LoadHtml(code); 
     var items = doc.DocumentNode.SelectNodes("//a[@id='thread_title_*]"); 

但它不工作。有沒有解決方案?

+0

「它不工作」?請參閱http://www.catb.org/~esr/faqs/smart-questions.html#code – Juliet 2011-02-06 20:33:57

回答

2

此作品(測試):

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 
doc.LoadHtml(code); 
var items = doc.DocumentNode 
       .SelectNodes("//a[starts-with(@id,'thread_title_')]"); 

編輯:

我看着對方的回答就被刪除之前 - 在我看來這應該都還有工作(或所以我認爲):

var items = doc.DocumentNode 
       .SelectNodes("//a[@id='thread_title_*']"); //returs null 

經過一番研究後發現,XPath支持HtmAgilityPac k屬性不支持正則表達式,但可以使用如starts-with,contains,translate,substring-beforesubstring-after等函數。只是需要注意。

+0

+1正確答案。 – 2011-02-06 20:24:22