C# 从html获取值
我对C#还相当陌生,我正试图从浏览器游戏中获得一个等级。这是我使用的代码,它带有一个错误 “对象引用未设置为对象的实例” 下面我将向您展示HTML代码:C# 从html获取值,c#,html,nullreferenceexception,C#,Html,Nullreferenceexception,我对C#还相当陌生,我正试图从浏览器游戏中获得一个等级。这是我使用的代码,它带有一个错误 “对象引用未设置为对象的实例” 下面我将向您展示HTML代码: <div class="levelFrontTopArea"> <a style="text-decoration:none" href="/profile.php">7</a> </div> 您正在使用GetElementByID,但您的div没有ID。请尝试将HTML更改为: <
<div class="levelFrontTopArea">
<a style="text-decoration:none" href="/profile.php">7</a>
</div>
您正在使用GetElementByID,但您的div没有ID。请尝试将HTML更改为:
<div ID="levelFrontTopArea" class="levelFrontTopArea">
<a style="text-decoration:none" href="/profile.php">7</a>
</div>
如果要按类获取元素,可以循环使用div标记
static IEnumerable<HtmlElement> ElementsByClass(HtmlDocument doc, string className)
{
foreach (HtmlElement e in doc.All)
if (e.GetAttribute("className") == className)
yield return e;
}
我不能改变源代码,如果它只是阅读它,对吗?我不知道你的意思。你自己写的html吗?或者它是由某个东西生成的?那么我的解决方案将无法工作,除非您能够更改生成html的代码,使其具有ID。您可以使用GetElementsByCassName。只有GetElementByTagNameOK。我认为您还需要更改在GetElementsByTagName中输入的内容。使其成为GetElementsByTagName(“a”)无法对“System.Collections.Generic.IEnumerableOops”类型的表达式应用带[]的索引,只需在其上复制代码,就可以使用
FirstOrDefault
获取第一个元素,因为该方法返回IEnumerable,你也可以在foreach中使用它。当他得到一个NullReference
异常时,这仅仅是因为他试图得到一个没有id的class元素。问题实际上是如何得到class元素。
static IEnumerable<HtmlElement> ElementsByClass(HtmlDocument doc, string className)
{
foreach (HtmlElement e in doc.All)
if (e.GetAttribute("className") == className)
yield return e;
}
var elmnt = ElementsByClass(webBrowser1.Document, "levelFrontTopArea");
levellabel.Text = elmnt.FirstOrDefault().InnerText;