我有一个html代码,如下所示:
<div class="classA">
Content
</div>
<div class="classA">
Content
</div>
// another ClassA ....
<div class="classA">
<blockquote>Some key</blockquote >
</div>
如何删除Some key
的outerHTML,或者使用html敏捷包获取class
以上所有具有Some key
的html代码?
意思是,我想要的结果是
<div class="classA">
Content
</div>
<div class="classA">
Content
</div>
// another ClassA ....
XPATH是您的朋友。
这只返回一个查询的预期结果
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
foreach (HtmlNode node in doc.DocumentNode.SelectNodes(
"//blockquote[text()='Some key']/parent::*/preceding::*"))
Console.WriteLine(node.OuterHtml);
其中
//blockquote[text()='Some key']
选择具有所需键的元素。如果它应该在<div class="classA">
内,则使用//div[@class='classA']/blockquote[text()='Some key']
的更精确的路径表达式parent
选择父元素,即<div class="classA">
preceding
选择给定节点之前的所有节点
演示:https://dotnetfiddle.net/BlQ3w9
看起来您想找到文本Some key
,然后查看父级,直到找到具有类classA
的元素,然后在DOM中删除该元素>。
您可以通过元素的内部文本找到它:https://html-agility-pack.net/knowledge-base/14288183/find-the-parent-div-of-a-specific-text-in-a-htmldocument
然后,您可能希望循环父节点,直到null
或找到ParentNode。HasClass('classA'(。您也可以在Ancestors((上使用Linq。
此时,您就有了要删除的元素。因此,您可以使用它在自身之后查找兄弟姐妹并将其删除。