从webbrowser获取ID并显示在标签中

时间:2015-02-05 12:42:53

标签: c# getelementbyid

所以我有一个问题..我想在我的Windows申请表上的标签上显示网页上的文字。这是“Inspect Element”代码:

<ul id="userInfoNav">
<li>Rank: <span class="value">Sivilist</span></li>
<li>Bosted: <span class="value">Oslo</span></li>
<li>Gjeng: <span class="value">Ingen</span></li>
<li>Penger: <span id="money_hand" class="value">16,000 kr</span></li>
<li>Kuler: <span class="value">0 stk</span></li>

我尝试过使用:

web.Document.GetElementById("userInfoNav").InvokeMember("Value", label1.Text);

但它没有做任何事情......

文本也可能不时改变..

2 个答案:

答案 0 :(得分:2)

获取外部文本:

statsTextBox.Text = web.Document.GetElementById("userInfoNav").OuterText;

在执行代码之前检查ID是否存在:

HtmlElement htmlelement = web.Document.GetElementById("userInfoNav");
            if (htmlelement == null)
            {
                return;
            }
            else
            {
                statsTextBox.Text = web.Document.GetElementById("userInfoNav").OuterText;
            }

答案 1 :(得分:0)

问题并没有得到很好的表达,但从评论中可以看出,有几件事可能是你想要的:

  1. <ul id="userInfoNav">中的完整内部html(请注意,由于ul是未关闭的标记,因此内容可能与您预期的不同):

    label1.Text = webBrowser1.Document.GetElementById("userInfoNav").innerHtml;
    
  2. 每个<li>上的html:

    var elem = webBrowser1.Document.GetElementById("userInfoNav");
    foreach (var child in elem.Children.OfType<HtmlElement>())
    {
      label1.Text += child.InnerHtml;  // child.InnerHtml contains the html of    each li
      // You can use child.InnerText which would remove the html tags (<span>)
    }
    
  3. 你所说的是你在评论中想要的东西(即&#34; Rank&#34;&#34; Bosted&#34;&#34; Gjeng&#34;&#34; Penger和& #34;的Kuler&#34)。特定于此情况的代码而不是一般情况:

    var elem = webBrowser1.Document.GetElementById("userInfoNav");
    foreach (var child in elem.Children.OfType<HtmlElement>())
    {
      label1.Text += child.InnerText.Split(':')[0]);  
    }
    
  4. 我认为这三者都不是你想要的,但是如果没有你指定更多,我就能做到这一点。至少,它应该让您了解如何访问数据