随笔-13  评论-73  文章-1  trackbacks-0

private static string ConvertToAbsoluteUrls (string html, Uri relativeLocation) {
    IHTMLDocument2 doc = new HTMLDocumentClass ();
    doc.write (new object [] { html });
    doc.close ();

    foreach (IHTMLAnchorElement anchor in doc.links) {
        IHTMLElement element = (IHTMLElement)anchor;
        string href = (string)element.getAttribute ("href", 2);
        if (href != null) {
            Uri addr = new Uri (relativeLocation, href);
            anchor.href = addr.AbsoluteUri;
        }
    }

    foreach (IHTMLImgElement image in doc.images) {
        IHTMLElement element = (IHTMLElement)image;
        string src = (string)element.getAttribute ("src", 2);
        if (src != null) {
            Uri addr = new Uri (relativeLocation, src);
            image.src = addr.AbsoluteUri;
        }
    }

    string ret = doc.body.innerHTML;

    return ret;
}

posted on 2006-06-07 00:03 C# hack 阅读(884) 评论(8)  编辑 收藏 网摘

评论:
#1楼  2006-06-07 09:50 | 秋天的云      
HTMLDocumentClass 类在哪里?
  回复  引用  查看    
#2楼 [楼主] 2006-06-09 02:03 | C# hack      
1 添加引用时在COM组件里面选择mshtml

2 using mshtml;
  回复  引用  查看    
#3楼  2007-08-20 22:33 | 吕昆 [未注册用户]
不错!看来你是WEBFORM研究比较多:)

也欢迎到我的博客做客:)

http://www.10000o.com.cn
  回复  引用    
#4楼  2007-09-13 16:52 | 戒焦戒躁      
还不如用正则表达式来得简单。
  回复  引用  查看    
#5楼 [楼主] 2007-09-28 12:37 | C# hack      
To 戒焦戒躁,
正则表达式会让你累死,主要是html的不确定性

没有实践就请思考后回复
  回复  引用  查看    
#6楼  2008-02-29 11:26 | Jacky Chiang [未注册用户]
这种转换方式,只转换了body体的,header里面的都未处理
怎么实现把整个网页所有代码都转换?
没找到这个组件的详细介绍,也不知道怎么修改,博主可以告知吗
谢谢了
  回复  引用    
#7楼  2008-02-29 11:27 | Jacky Chiang [未注册用户]
myth_abc@163.com
我的邮件,如果方便的话,可以给我发邮件
谢谢。
  回复  引用    
#8楼  2008-06-29 20:25 | KarEng [未注册用户]
i so love hacker
  回复  引用    




标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
Google站内搜索

相关文章:

相关链接: