110,536
社区成员
发帖
与我相关
我的任务
分享
<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>
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# 这边调用也行。
var html = File.ReadAllText("e:\\test.htm");
string result = null;
var t = new Thread(() => {
using (var wb = new WebBrowser())
{
wb.DocumentText = "hello, mshtml";
var doc = wb.Document.OpenNew(true);
doc.Write(html);
result = doc.GetElementsByTagName("span")[0].InnerText;
}
});
t.SetApartmentState(ApartmentState.STA);
t.Start();
t.Join();
Console.WriteLine(result);
Console 程序因为不是 STA 的所以要使用一个 STA 的新线程,如果本来就是 winforms 的程序那就不用了。
var html = File.ReadAllText("e:\\test.htm");
var a = new HTMLDocument();
((IHTMLDocument2)a).write(html);
var b = ((IHTMLElement2)a.body).getElementsByTagName("span").GetEnumerator();
while (b.MoveNext())
{
Console.WriteLine(((IHTMLElement)b.Current).innerText);
}
输出是正确的。