C# 只替换文件中的一件东西
我制作了一个程序,用于修改本地html页面并替换其中的某个值,如您在此处所见: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(
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”中的额外属性来定位要替换的唯一单元格。