所以我有一个问题..我想在我的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);
但它没有做任何事情......
文本也可能不时改变..
答案 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)
问题并没有得到很好的表达,但从评论中可以看出,有几件事可能是你想要的:
<ul id="userInfoNav">
中的完整内部html(请注意,由于ul
是未关闭的标记,因此内容可能与您预期的不同):
label1.Text = webBrowser1.Document.GetElementById("userInfoNav").innerHtml;
每个<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>)
}
你所说的是你在评论中想要的东西(即&#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]);
}
我认为这三者都不是你想要的,但是如果没有你指定更多,我就能做到这一点。至少,它应该让您了解如何访问数据