C# 通过 HtmlDocument 操作HTML节点

C# 通过 HtmlDocument 操作HTML节点时,会发生不停地刷新的情况,在对html文档操作后加以判断即可解决这种问题。
    Public Sub setMainUlr(ByVal WebBrowser1 As WebBrowser)
            Dim pElem As HtmlElement = Nothing
            '即时信息页面
            pElem = WebBrowser1.Document.All("myFrame")
            If Not pElem Is Nothing Then
                If pElem.GetAttribute("src") <> myFrameUrl Then
                    Dim ax As AccessXml = New AccessXml()
                    pElem.SetAttribute("src", myFrameUrl)
                End If
            End If
            '展示图片页面
            pElem = WebBrowser1.Document.All("slice")
            If Not pElem Is Nothing Then
                If pElem.GetAttribute("src") <> pictureUrl Then
                    Dim ax As AccessXml = New AccessXml()
                    pElem.SetAttribute("src", pictureUrl)
                End If
            End If
        End Sub
通用方法:
private void DisplayCustomersTable()
{
    DataSet customersSet = new DataSet();
    DataTable customersTable = null;
    SqlDataAdapter sda = new SqlDataAdapter("SELECT * FROM Customers", "Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;");
    sda.Fill(customersTable);
    customersTable = customersSet.Tables[0];

    if (webBrowser1.Document != null)
    {
        HtmlElement tableRow = null;
        HtmlElement headerElem = null;

        HtmlDocument doc = webBrowser1.Document;
        HtmlElement tableElem = doc.CreateElement("TABLE");
        doc.Body.AppendChild(tableElem);

        HtmlElement tableHeader = doc.CreateElement("THEAD");
        tableElem.AppendChild(tableHeader);
        tableRow = doc.CreateElement("TR");
        tableHeader.AppendChild(tableRow);

        foreach (DataColumn col in customersTable.Columns)
        {
            headerElem = doc.CreateElement("TH");
            headerElem.InnerText = col.ColumnName;
            tableRow.AppendChild(headerElem);
        }

        // Create table rows.
        HtmlElement tableBody = doc.CreateElement("TBODY");
        tableElem.AppendChild(tableBody);
        foreach (DataRow dr in customersTable.Rows)
        {
            tableRow = doc.CreateElement("TR");
            tableBody.AppendChild(tableRow);
            foreach (DataColumn col in customersTable.Columns)
            {
                Object dbCell = dr[col];
                HtmlElement tableCell = doc.CreateElement("TD");
                if (!(dbCell is DBNull))
                {
                    tableCell.InnerText = dbCell.ToString();
                }
                tableRow.AppendChild(tableCell);
            }
        }
    }
}
例子:
private   void   Form1_Load(object   sender,   EventArgs   e)   
{
webBrowser1.DocumentText =
"<html><body>Please enter your name:<br/>" +
"<input type='text' name='userName'/><br/>" +
"<a href='http://www.microsoft.com'>continue</a>" +
"</body></html>";
webBrowser1.Navigating +=
new WebBrowserNavigatingEventHandler(webBrowser1_Navigating);
}

private void webBrowser1_Navigating(object sender,
WebBrowserNavigatingEventArgs e)
{
System.Windows.Forms.HtmlDocument document =
this.webBrowser1.Document;

if (document != null && document.All["userName"] != null &&
String.IsNullOrEmpty(
document.All["userName"].GetAttribute("value")))
{
e.Cancel = true;
System.Windows.Forms.MessageBox.Show(
"You must enter your name before you can navigate to " +
e.Url.ToString());
}
}
 
 

 

提供对 WebBrowser 控件承载的 HTML 文档的顶级编程访问。

HtmlDocument 类型公开以下成员。

 名称说明
AttachEventHandler为已命名的 HTML DOM 事件添加事件处理程序。
CreateElement新建一个指定 HTML 标记类型的 HtmlElement
DetachEventHandler从 HTML DOM 上的命名事件中移除事件处理程序。
Equals确定指定的 Object 是否等于当前的 Object。 (重写 Object..::.Equals(Object)。)
ExecCommand对文档执行指定的命令。
Finalize允许 Object 在“垃圾回收”回收 Object 之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
Focus在当前文档上设置用户输入焦点。
GetElementById将元素的 ID 属性用作搜索键来检索单个 HtmlElement
GetElementFromPoint检索位于指定工作区坐标位置的 HTML 元素。
GetElementsByTagName检索具有指定 HTML 标记的元素集合。
GetHashCode用作特定类型的哈希函数。 (重写 Object..::.GetHashCode()()()。)
GetType获取当前实例的 Type。 (继承自 Object。)
InvokeScript已重载。 执行在 HTML 页面中定义的动态脚本函数。
MemberwiseClone创建当前 Object 的浅表副本。 (继承自 Object。)
OpenNew获取一个新的 HtmlDocument 以便与 Write 方法一起使用。
ToString返回表示当前 ObjectString。 (继承自 Object。)
Write编写一个新的 HTML 页。
页首
 名称说明
Equality 
Inequality 
页首
 名称说明
ActiveElement提供当前具有用户输入焦点的 HtmlElement
ActiveLinkColor获取或设置超链接被用户单击后的 Color
All获取 HtmlElementCollection 的实例,该实例存储文档的所有 HtmlElement 对象。
BackColor获取或设置 HTML 文档的背景色。
Body获取 BODY 标记的 HtmlElement
Cookie获取或设置与此文档关联的 HTTP Cookie。
DefaultEncoding获取默认情况下为当前文档使用的编码。
Domain获取或设置字符串,描述用于安全目的的此文档的域。
DomDocument获取此 HtmlDocument 的非托管接口指针。
Encoding获取或设置此文档的字符编码。
Focused获取一个值,该值指示文档是否具有用户输入焦点。
ForeColor获取或设置文档的文本颜色。
Forms获取文档中所有 <FORM> 元素的集合。
Images获取文档中所有图像标记的集合。
LinkColor获取或设置超链接的颜色。
Links获取此 HTML 文档中所有超链接的列表。
RightToLeft获取或设置当前文档中文本的方向。
Title获取或设置当前 HTML 文档中 <TITLE> 标记的文本值。
Url获取描述此文档位置的 URL。
VisitedLinkColor获取或设置用户已经访问的链接(指向 HTML 页)的颜色。
Window获取与此文档关联的 HtmlWindow
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值