C# 只替换文件中的一件东西

C# 只替换文件中的一件东西,c#,C#,我制作了一个程序,用于修改本地html页面并替换其中的某个值,如您在此处所见: string j = Microsoft.VisualBasic.Interaction.InputBox("Replace " + listView2.SelectedItems[0].Text + "/" + intlstv2.ToString() + " With?"); var links = webBrowser1.Document.GetElementsByTagName("td"); foreach(

我制作了一个程序,用于修改本地html页面并替换其中的某个值,如您在此处所见:

string j = Microsoft.VisualBasic.Interaction.InputBox("Replace " + listView2.SelectedItems[0].Text + "/" + intlstv2.ToString() + " With?");

var links = webBrowser1.Document.GetElementsByTagName("td");
foreach(HtmlElement lnk in links)
{
    if (lnk.GetAttribute("className") == "point" && lnk.InnerText == listView2.SelectedItems[0].Text || lnk.GetAttribute("className") == "point tekort" && lnk.InnerText == listView2.SelectedItems[0].Text)
    {
        MessageBox.Show(lnk.InnerText);
        MessageBox.Show("Replacing with: " + j.ToString());

        System.IO.File.WriteAllText("Fin.html", this.webBrowser1.DocumentText);

        System.IO.File.WriteAllText("Fin.html", System.IO.File.ReadAllText("Fin.html").Replace(lnk.InnerText, j));
    }
}
在html文件中:

<td class="point">14,5</td> <---- Value that I want replaced
<td class="average" title="Med">14,5</td> <---- Value that I want to keep

14,5您可以将HTML文档作为对象树而不是字符串的“blob”遍历,从而获得更好的成功

也就是说,使用
HtmlDocument
这样做会很痛苦,因为它不能提供一种通过类名、属性值等轻松进行内省的方法。也就是说,您可以调用
GetElementByTagName
,获取所有
td
元素,并通过
class
属性过滤这些元素。有点复杂,但我想是可控的


我通常使用
HtmlAgilityPack
库,它提供了更多的方法和对象,可以让您更轻松地找到html元素。强烈推荐你使用它

将HTML文档作为对象树而不是字符串的“blob”遍历,可以获得更好的成功

也就是说,使用
HtmlDocument
这样做会很痛苦,因为它不能提供一种通过类名、属性值等轻松进行内省的方法。也就是说,您可以调用
GetElementByTagName
,获取所有
td
元素,并通过
class
属性过滤这些元素。有点复杂,但我想是可控的


我通常使用
HtmlAgilityPack
库,它提供了更多的方法和对象,可以让您更轻松地找到html元素。强烈推荐你使用它

您可以添加“14,5”中的额外属性来定位要替换的唯一单元格。您可以添加“14,5”中的额外属性来定位要替换的唯一单元格。