3

首先,我的应用程序不是 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

4 回答 4

4

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

http://htmlagilitypack.codeplex.com/

于 2012-09-21T15:08:42.657 回答
0

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

于 2012-09-21T15:08:45.637 回答
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;
于 2020-11-10T14:24:03.887 回答
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, "");
于 2020-11-10T14:29:07.897 回答