我如何在这个 html 代码中解析主题节点并获取所有主题节点(及其标题和链接)并最终显示在树视图中?
我是angleSharp的新手。
我不确定“在树视图中”是什么意思,但我将忽略此域特定部分并告诉您如何获取一些节点等(顺便说一句:您引用的页面似乎已过时/错误 - 请添加如果您想正确回答问题的特定代码段)。
为简单起见,我假设一个 HTML 像
<body>
<... some_nesting>
<div class="topic-class">
<h2>Topic Title</h2>
<... some_nesting>
<div class="category-class">
<h3>Category Title</h3>
<... some_nesting>
<a href="caption-link" class="caption-class">Caption Title</a>
</...>
<more ... />
</div>
<more ... />
</...>
</div>
<more ... />
</...>
</body>
现在我们需要做两件事:
在简单的 HTML 中,我们很容易将 CSS 类识别为标识符(例如,、、、.topic-class
).category-class
,.caption-link
尤其是结合给定的结构和标签。关于分组,我们需要从主题到类别再到标题。
总而言之,我们可以编写更简洁的 LINQ 或更明确的可读代码来生成分组结构。出于说明目的,我选择后者:
// document is current document returned from OpenAsync of an IBrowsingContext instance
var topics = document.QuerySelectorAll("body > .topic-class");
foreach (var topic in topics)
{
var topicTitle = topic.QuerySelector("h2")?.TextContent;
var categories = topic.QuerySelectorAll(".category-class");
foreach (var category of categories)
{
var categoryTitle = category.QuerySelector("h3")?.TextContent;
var captions = category.QuerySelectorAll("a.caption-link");
foreach (IHtmlAnchorElement caption of captions)
{
var captionTitle = caption.TextContent;
var link = caption.Href;
}
}
}
这里剩下的是将主题、类别和标题附加到适当的数据容器中以进行显示。但是所有的信息都在那里,你只需要知道你想如何使用/建模它。
希望这可以帮助!