当前位置: 代码迷 >> C# >> HtmlAgilityPack 遇到这种情况怎么处理
  详细解决方案

HtmlAgilityPack 遇到这种情况怎么处理

热度:275   发布时间:2016-05-05 02:51:23.0
HtmlAgilityPack 遇到这种情况怎么办?
本帖最后由 starfd 于 2015-09-07 16:35:21 编辑
<table width="770" border="0" cellpadding="0" cellspacing="0">
    <tr>
        <td class="even" width="640" valign="middle">
               <span style="line-height: 20px;">10年≤年限<50年</span>
        </td>
    </tr>
</table>


【需要达到的效果】
提取出
 “10年≤年限<50年”

用mshtml很容易就提出来了,可是HtmlAgilityPack 提不出来也就算了,还更改了内容返回。。。咋办?
mshtml又不知道在c#里怎么调用,求指点正确姿势..

------解决思路----------------------
那样反射现在没有什么意义了,C# 这边本来就可以添加 COM 的引用,可以自动帮你生成好需要的接口,也有 dynamic 关键字支持 late-bind。给工程添加引用的时候有一栏 COM ,里面找 Microsoft  HTML Object Library,添加后就可以new HTMLDocument()了。如果用了dynamic,体验和 VB 是一样的,比如我之前的例子可以改成:

var html = File.ReadAllText("e:\\test.htm");
dynamic doc = new HTMLDocument();
doc.write(html);
var b = doc.body.getElementsByTagName("span");
Console.WriteLine(b[0].innerText);
既然你熟悉用 VB,不熟悉 C# 调用 COM,那干脆用 VB 写个程序干这个事情,给 C# 这边调用也行。