C#Html敏捷包dd和dt标签解析问题
本文关键字:标签 问题 dt dd C#Html | 更新日期: 2023-09-27 17:58:59
我试图解析这个字段,但无法使其工作。当前尝试:
HTML:
<div class="movie_data">
<dl>
<dt><a href="http://www.imdb.com/title/tt1302011/">IMDB</a>:</dt>
<dd>8.0 / 10</dd>
<dt>Zvrst:</dt>
<dd><a href="/sl/kino?t=&g=1&actual=1">komedija</a>, <a href="/sl/kino?t=&g=14&actual=1">animirani</a>, <a href="/sl/kino?t=&g=21&actual=1">družinski</a></dd>
<dt>Trajanje:</dt>
<dd>90 min</dd>
</dl>
</div>
我的代码:
HtmlAgilityPack.HtmlWeb web = new HtmlAgilityPack.HtmlWeb();
HtmlAgilityPack.HtmlDocument htmlDocTusCelje = web.Load(my_link_to);
HtmlAgilityPack.HtmlNode nodeOcena = htmlDocTusCelje.DocumentNode.SelectSingleNode("//div[@class='movie_data']/dt/dd[0]");
labelOcena.Text = nodeOcena.InnerText;
我只需要解析来自<dd>
标记的内部文本,但我得到了一个异常:NullReferenceException, Object reference not set to an instance of an object
。
我尝试了SelectNodes
和foreach循环——同样的故事。请帮我摆脱这个错误。
您的xpath有两个问题:
- 索引应基于1,而不是基于0
- 你写的是
dt
而不是dl
如果xpath查询找不到这样的节点,它将返回null
,这将导致您在尝试使用nodeOcena
时出错。
这似乎奏效了:
HtmlNode node = doc.DocumentNode.SelectSingleNode("//div[@class='movie_data']/dl/dd[1]");