如何使用 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-d
,subclass2
和所有输入和文本区域的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");
我不知道如何进行
以下 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();