在c sharp类中修改HTML文件

时间:2012-09-21 15:04:14

标签: c# html

首先,我的应用程序不是Web应用程序。 我的目标是阅读html文件并进行修改。

所以我写这段代码:

    string fileName = "~\\ActivationMail.html";
    string textLine = string.Empty;

    System.IO.StreamReader objReader;
    objReader = new System.IO.StreamReader(fileName);

    do
    {
        textLine += objReader.ReadLine();
        if (textLine.Contains("id=\"link\""))
        {
            textLine += "href=\"www.google.com\"";
        }
    } while (objReader.Peek() != -1);

    objReader.Close();

但每次阅读整个html文件似乎都不是最佳解决方案。我可以在不读取(循环)整个html文件的情况下更改特定的div吗?有可能吗?

4 个答案:

答案 0 :(得分:4)

如果您只想更改某些内容,则可以使用XPath执行此操作。使用HTML Agility Pack,您可以使用C#。

执行此操作

http://htmlagilitypack.codeplex.com/

答案 1 :(得分:0)

您可以使用XElement等将HTML加载为XML,但最终如果要删除或插入字符,则需要调整文件大小并重新定位字符。

答案 2 :(得分:0)

安装HAP软件包:

Install-Package HtmlAgilityPack -Version 1.11.27

字符串:

// From String
string result ="<div id="RemoveableDiv"></div> <div id="2"></div>"

代码:

var doc = new HtmlDocument();
doc.LoadHtml(result);
foreach (var node in doc.DocumentNode
.Descendants("div")
.Where(d => d.GetAttributeValue("Id", "RemoveableDiv").IndexOf("NavContent") >= 0)
.ToArray())
node.Remove();

result = doc.documentnode.innerhtml;

答案 3 :(得分:0)

获取section_1的开始和结束索引的位置

stringIndex =StringNthOccFinder.IndexOfNth(HtmlSting, "<Section_1", 0, 1);
endIdex = StringNthOccFinder.IndexOfNth(HtmlSting, "</Section_1>", 0, 14);

获取要删除的HTML部分

  HtmlSection= result.Substring(stringIndex , endIdex - stringIndex );

将html部分替换为“”

   result = result.Replace(HtmlSection, "");