我在源代码中有多个元素,看起来像这样。
<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_*]");
但它不起作用。有解决办法吗?
最佳答案
这有效(已测试):
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
经过一番研究后发现,HtmAgilityPack 中对属性的 XPath 支持不支持正则表达式,但您可以使用诸如 starts-with
、contains
、translate
、substring-before
和 substring-after
。只是一个需要注意的问题。
关于c# - HTML 选择 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4915725/