我正在使用HTML Agility Pack构建具有不同功能的库。
其中之一是:
例如:
<!-- data-example-start
起始标记和<!-- data-example-end
结束标记之间的HTML部分。两者都是关键字(注释以这些关键字开头)
<body>
<p>Title
</p>
<!-- data-example-start-try_1 -->
<div>
</div>
<span id="hello"> Hi
</span>
<!-- data-example-end-try_1 -->
<!-- data-example-start-goodbye 2-->
<div>
<span id="bye"> Bye
</span>
</div>
<p>
</p>
<!-- data-example-end-goodbye 2-->
</body>
在这种情况下,我希望替换<!-- data-example-start-try_1 -->
和<!-- data-example-end-try_1 -->
之间的第一个HTML部分,因为里面有我要搜索的搜索词“ hello”。
如何在Html Agility Pack中选择两个HTML注释之间包含的HTML部分?
预先感谢
答案 0 :(得分:0)
这里是一个在线示例,显示了如何在注释之间获取节点:
https://dotnetfiddle.net/JlkMot
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
var docNode = doc.DocumentNode.InnerHtml;
var descendants = doc.DocumentNode.Descendants().ToList();
var startNode = descendants.FindIndex(x => x.InnerHtml == "<!-- data-example-start-try_1 -->");
var endEnd = descendants.FindIndex(x => x.InnerHtml == "<!-- data-example-end-try_1 -->");
if (startNode != -1 && endEnd != 1)
{
var betweenNodes = descendants.GetRange(startNode + 1, endEnd - startNode - 1);
foreach (var node in betweenNodes)
{
// show 2 times "Hi", once for the span, once for the text
Console.WriteLine(node.InnerHtml);
}
}