如何使用 html 敏捷包在 c# 中获取 html 文档中 html 元素的 id

本文关键字:html 获取 文档 id 元素 何使用 | 更新日期: 2023-09-27 17:56:32

我有这样的东西

<div class='mainclass subclass1' quest-id='123'> </div>
<div class='mainclass subclass2' quest-id='234'> </div>
<input quest-id='3236'> </input>
<textarea quest-id='256'> </textarea>

我想要属于名为 subclass1 的类的所有div 的quest-dsubclass2和所有输入和文本区域的quest-id。 如何在 c# 中使用 html 敏捷包来做到这一点?

我有这样的 C# 代码:

HtmlDocument document = new HtmlDocument();
document.LoadHtml(obj.NewPage.Content);
HtmlNode htmlRootElement = document.DocumentNode.SelectSingleNode("/html");
HtmlNode bodyElement = htmlRootElement.SelectSingleNode("body");

我不知道如何进行

如何使用 html 敏捷包在 c# 中获取 html 文档中 html 元素的 id

以下 XPath 可以从此问题中发布的示例 html 中获取所有任务 id 值:

//div[contains(@class, 'subclass1') or contains(@class, 'subclass2')]
| //input[@quest-id] 
| //textarea[@quest-id]

工作示例:

var html = @"<root><div class='mainclass subclass1' quest-id='123'> </div>
<div class='mainclass subclass2' quest-id='234'> </div>
<input quest-id='3236'> </input>
<textarea quest-id='256'> </textarea></root>";
var doc = new HtmlDocument();
doc.LoadHtml(html);
var nodes = 
    doc.DocumentNode
       .SelectNodes("//div[contains(@class, 'subclass1') or contains(@class, 'subclass2')]"
                        + " | //input[@quest-id] "
                        + " | //textarea[@quest-id]");
foreach (var node in nodes)
{
    Console.WriteLine(node.GetAttributeValue("quest-id", ""));
}
这是我

编写和测试的代码片段。

 const string sampleHTML = @"<div class='mainclass subclass1' quest-id='123'></div>
    <div class='mainclass subclass2' quest-id='234'></div>
    <input quest-id='3236'> </input>
    <textarea quest-id='256'> </textarea>";

 HtmlAgilityPack.HtmlDocument myDoc = new HtmlAgilityPack.HtmlDocument();
 myDoc.LoadHtml(sampleHTML);
 HtmlNodeCollection foundNodes = myDoc.DocumentNode.SelectNodes("/div[contains(@class, 'subclass2')]");                                                                         
 MessageBox.Show(foundNodes[0].Attributes["quest-id"].Value);

当我运行代码段时,我在消息框中看到值"234"。

 string id = div.GetAttributeValue("id", "").ToString();
 string name= div.GetAttributeValue("name", "").ToString();