c# - HTML 选择 C#

标签 c# html select html-agility-pack xpath

我在源代码中有多个元素,看起来像这样。

<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-withcontainstranslatesubstring-beforesubstring-after。只是一个需要注意的问题。

关于c# - HTML 选择 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4915725/

相关文章:

c# - 如何使用 Linq To XML 获取元素值

c# - 从 js 函数填充 razor View 上的 viewmodel 属性

javascript - 使用 html 5 async 属性异步加载脚本

javascript - 如何使 Raphael js 打印方法在本地计算机上适用于法语、德语等字符?

android - 选择文本并在 MUPDF 中弹出显示含义

python - 在 Pandas 数据框中选择连续和非连续的多列

基于前缀的 MySQL SELECT 行

c# - C#中的FileStream StreamReader问题

c# - 将值从 php 页面文本框发送到 asp.net 网站文本框

html - 两个垂直 div,每个都有最大高度的自动滚动