如何以编程方式加载HTML文档以添加到文档?

时间:2010-07-11 14:51:26

标签: c# html asp.net-mvc html-parsing

我们从客户端提供HTML'包装'文件,我们需要将内容插入,然后呈现HTML。

在我们插入内容的HTML渲染之前,我需要在客户端包装器的<head>部分添加一些标签,例如对脚本文件,css和一些元标记的引用。

所以我正在做的是

string html = File.ReadAllText(wrapperLocation, Encoding.GetEncoding("iso-8859-1"));

现在我有完整的HTML。然后,我在该字符串中搜索预定义的内容,并将我们的内容插入到该字符串中,并进行渲染。

如何创建HTML文档的实例并根据需要修改<head>部分?

编辑:我不想引用System.Windows.Forms,因此WebBrowser不是一个选项。

5 个答案:

答案 0 :(得分:1)

我自己没有尝试过这个库,但这可能适合这个账单:http://htmlagilitypack.codeplex.com/

答案 1 :(得分:1)

您可以使用https://github.com/jamietre/CsQuery编辑html dom。

var dom = CQ.Create(html);
var dom = CQ.CreateFromUrl("http://www.jquery.com");

dom.Select("div > span")
.Eq(1)
.Text("Change the text content of the 2nd span child of each div");

只需选择头部并添加即可。

答案 2 :(得分:0)

我使用WebBrowser控件作为主机,并通过其Document属性导航/更改文档。

上面链接中有很好的文档和示例。

答案 3 :(得分:0)

您使用的是MasterPages吗? 这似乎是最明显的用途。

MasterPage有&lt; asp:ContentPlaceHolder&gt;用于您希望内容去的所有点。

在我们的应用程序中,我们有一个基本控制器,它覆盖所有的View()重载,以便从web.config中读取MasterPage的名称。这样自定义应用程序就像新的MasterPage一样简单,从控制器的角度来看,没有代码更改,因为我们的基类处理MasterPage / web.config的东西。

答案 4 :(得分:-1)

我无法获得自动解决方案,所以它归结为黑客:

public virtual void PopulateCssTag(string tags)
{
    // tags is a pre-compsed string containing all the tags I need.
    this.Wrapper = this.Wrapper.Replace("</head>", tags + "</head>");
}