在C#中删除HTML中的div标签

时间:2016-10-29 14:49:22

标签: javascript c# html iframe

我的目标是将HTML代码的二进制格式存储在iframe中。我想将标签转换为HTML。在JavaScript中,我将div内容转换为HTML,并通过隐藏字段获取HTML内容。

在那个页面中我有一个ajax HTML编辑器,所以我得到了很大的空白空间。我试图使用正则表达式删除它:

Regex.Replace(htmlformat,"divID",'')

但是它只删除了像div id=""style...这样的ID所以它删除了空格,但它不是HTML格式。所以iframe webservice无法将其转换为pdf。

我想使用C#在HTML中删除带有标签的div内容。

1 个答案:

答案 0 :(得分:0)

您还希望在div标签之前允许其他内容

<div[^>]*class="footer"[^>]*>(.*?)</div>

此外,不区分大小写。您可能需要转义引号之类的内容或结束标记中的斜杠。你在做什么背景?

另请注意,使用正则表达式进行HTML解析可能会非常讨厌,具体取决于输入。在下面的答案中提出了一个很好的观点 - 假设你有一个类似的结构:

<div>
    <div class="footer">
        <div>Hi!</div>
    </div>
</div>

尝试为此构建正则表达式是一种灾难。最好的办法是将文档加载到DOM中,并对其进行操作。

应该紧密映射到XML :: DOM的伪代码:

document = //load document
divs = document.getElementsByTagName("div");
for(div in divs) {
    if(div.getAttributes["class"] == "footer") {
        parent = div.getParent();
        for(child in div.getChildren()) {
            // filter attribute types?
            parent.insertBefore(div, child);
        }
        parent.removeChild(div);
    }
}