c# - 使用 HTMLAgilityPack c# 按类名删除元素

标签 c# .net xslt xpath html-agility-pack

我正在使用 html 敏捷包将我的 html 文档的内容读入字符串等。完成后,我想按类删除该内容中的 certian 元素,但是我遇到了一个问题.

我的 HTML 看起来像这样:

<div id="wrapper">
    <div class="maincolumn" >
        <div class="breadCrumbContainer">
            <div class="breadCrumbs">
            </div>
        </div>

        <div class="seo_list">
            <div class="seo_head">Header</div>
        </div>

Content goes here...
</div>

现在,我使用了一个 xpath 选择器来获取 中的所有内容,并像这样使用了 InnerHtml 属性:

            node = doc.DocumentNode.SelectSingleNode("//div[@id='wrapper']");
            if (node != null)
            {
                pageContent = node.InnerHtml;
            }

从这一点来看,我想删除类为“breadCrumbContainer”的 div,但是当使用下面的代码时,我收到错误:“在集合中找不到节点”

            node = doc.DocumentNode.SelectSingleNode("//div[@id='wrapper']");
            node = node.RemoveChild(node.SelectSingleNode("//div[@class='breadCrumbContainer']"));

            if (node != null)
            {
                pageContent = node.InnerHtml;
            }

任何人都可以阐明这一点吗?我对 Xpath 很陌生,对 HtmlAgility 库也很陌生。

谢谢,

戴夫

最佳答案

因为 RemoveChild 只能移除直接子节点,不能移除孙子节点。试试这个:

    HtmlNode node = doc.DocumentNode.SelectSingleNode("//div[@class='breadCrumbContainer']");
    node.ParentNode.RemoveChild(node);

关于c# - 使用 HTMLAgilityPack c# 按类名删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5218815/

相关文章:

c# - 从对象字典中获取对象

c# - 使用 PLINQ 计算和更新机箱内的值不起作用

c# - 多种形式的全局化

xml - 查找 XML 节点集的最低公共(public)祖先

xml - XSL : output of "nested" structures

c# - 是否可以在 C++ 和 C# 之间共享 "enum class"?

c# - 如何使用 .Net Core 识别 Linux/Mac 机器的硬件细节

.net - 域对象扩展数据传输对象

performance - XSLT 性能

c# - 具有多列的 WinForms 组合框 (C#)?