求助,存取html页面的问题,简单的说。

FAICHEN 2006-09-20 03:25:30
读取 html到DOM ,找到tag中span中的id属性,去更改id的属性
debugview中看到更改,但是存为文件,没有更改

该如何写呢?谢谢,代码如下
public void ParserHtmlResource(string path)
{

System.IO.StreamReader sr = new System.IO.StreamReader(path);
string strHtml = sr.ReadToEnd();
mshtml.IHTMLDocument2 mydoc = new mshtml.HTMLDocumentClass();

mydoc.write(strHtml);

foreach (mshtml.IHTMLElement el in (mshtml.IHTMLElementCollection)mydoc.body.all)
{
string tagname = el.tagName;
if (tagname.ToLower() == "span")
{
object nameAttribute = el.getAttribute("id", 0);
if (nameAttribute != null)
{
// mshtml.IHTMLElement3 element = (mshtml.IHTMLElement3)el;
// element.contentEditable = "true";
Random rand = new Random();
int serial = rand.Next(500);
string name = string.Format("unnamedid{0:D}", serial);
el.setAttribute("id", name, 1);
}
}
}
IPersistFile ss = mydoc as IPersistFile;
ss.Save("c:\\cc.html", true);
}
...全文
232 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhujin8777 2006-11-27
  • 打赏
  • 举报
回复
Mark
FAICHEN 2006-09-21
  • 打赏
  • 举报
回复
剩下的可以散分咯
FAICHEN 2006-09-21
  • 打赏
  • 举报
回复
尝试了 IPersistStreamInit 可以保存,但是发现原来cast IHTMLDocument3就可以保存出来了竟然找了半天没找到,特此更新。
public void ParserHtmlResource(string path)
{

System.IO.StreamReader sr = new System.IO.StreamReader(path);
string strHtml = sr.ReadToEnd();
mshtml.IHTMLDocument2 mydoc = new mshtml.HTMLDocumentClass();

mydoc.write(strHtml);

foreach (mshtml.IHTMLElement el in (mshtml.IHTMLElementCollection)mydoc.body.all)
{
string tagname = el.tagName;
if (tagname.ToLower() == "span")
{
object nameAttribute = el.getAttribute("id", 0);
if (nameAttribute != null)
{
// mshtml.IHTMLElement3 element = (mshtml.IHTMLElement3)el;
// element.contentEditable = "true";
Random rand = new Random();
int serial = rand.Next(500);
string name = string.Format("unnamedid{0:D}", serial);
el.setAttribute("id", name, 1);
}
}
}
mshtml.IHTMLDocument3 saveDoc =
(mshtml.IHTMLDocument3)mydoc as mshtml.IHTMLDocument3;
string ss = saveDoc.documentElement.outerHTML;
//outerHTML is updated,save it file

}
FAICHEN 2006-09-21
  • 打赏
  • 举报
回复
纯文本怎末做?太麻烦了吧~
cast mydoc 之前通过debugview 可以看到body里面的内容已经更改
这句话什莫意思?“保存的话并不是保存执行后的代码“

谢谢阿~
FAICHEN 2006-09-21
  • 打赏
  • 举报
回复
原来这末容易啊
鸟牙 2006-09-21
  • 打赏
  • 举报
回复
哈哈.终于解决了啊?
阿牛138588 2006-09-20
  • 打赏
  • 举报
回复
因为你只是修改了执行后代码,但保存的话并不是保存执行后的代码。
为什么不考虑使用纯文本操作
FAICHEN 2006-09-20
  • 打赏
  • 举报
回复
帮顶哦
FAICHEN 2006-09-20
  • 打赏
  • 举报
回复
up

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧