我有这堂课:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace FTP_ProgressBar
{
class UpdateHtmlFile
{
static string HtmlFileFirstPart;
static string HtmlDynamicUpdatepart;
static string HtmlLastPart;
static string HtmlFile;
public static void UpdateHtml()
{
HtmlFile = File.ReadAllText(@"C:\xampp\htdocs\test\index.php");
int index = -1;
while (true)
{
index = HtmlFile.IndexOf("<div class=\"thumbWrapper\">");
if (index < 0)
{
break;
}
else
HtmlFileFirstPart = HtmlFile.Substring(0, index + 26);
break;
}
int index1 = HtmlFile.IndexOf("<!-- menu buttons -->");
while (true)
{
index = (index1 - 116);
if (index < 0)
{
break;
}
else
HtmlLastPart = HtmlFile.Substring(index);
break;
}
HtmlDynamicUpdatepart = @"<div class='playlist' data-address='mistique_ken_burns' data-title='mistique' data-transitionType='ken_burns' data-bgColor='#e5e5e5' data-playlistSize='165' data-duration='25000'>
<ul>
<li data-address='image1' class='playlistItem' data-imagePath='media/category1/main/01.jpg' data-startScale='1.4' data-endScale='0.5' data-startPosition='tl' data-endPosition='br'
data-link='http://www.google.com' data-target='_blank' data-description='hello quam. <a href='http://codecanyon.net/user/Tean' target='_blank'>Link</a>'
data-youtube='F08U2yCxbYg'><a href='#'><img src='media/category1/thumb/01.jpg' width='120' height='80' alt=''/></a></li>
</ul>
</div>";
HtmlFile = HtmlFileFirstPart + HtmlDynamicUpdatepart + HtmlLastPart;
StreamWriter w = new StreamWriter(@"c:\newhtml\new.html");
w.Write(HtmlFile);
w.Close();
}
}
}
HtmlFileFirstPart
和HtmlLastPart
永远不会改变。
每一段时间都会改变的唯一部分是HtmlDynamicUpdatepart
。
我找到了要添加/插入HtmlDynamicUpdatepart
的地点和位置。
问题是原始文件index.php的大小是134kb。
当我创建新文件时,它只有大约24kb文件,因为部分HtmlDynamicUpdatepart
替换了该部分文件中已存在的文本。
我想要做的是在文件的这一部分中的现有文本之后插入HtmlDynamicUpdatepart
。不要将它添加到文件的末尾,而是将其插入此位置,而不是替换其他现有文本。
答案 0 :(得分:0)
尝试使用HTMLAgilityPack 然后,您可以将HTML完全加载到HTML文档中并找到您的类。 通过(id / name / class)找到元素后,您可以更改内部HTML并将文档保存回文件。
您可以使用以下内容获取div的内部HTML:
htmlDoc.DocumentNode.Descendants("div")
.Where(d => d.Attributes.Contains("class") && d.Attributes["class"].Value.Contains("playlist"))
.First().InnerHtml = "new html";
然后使用:
htmlDoc.Save("File Path");
将其保存回文件