【发布时间】:2021-06-23 11:06:22
【问题描述】:
我正在尝试阅读 RSS 提要,但无法正常工作。我试图从 td 标记中获取内容,但代码在解析表行时总是抛出 NullReferenceException。任何帮助表示赞赏。 代码:
public void readRss()
{
string Url = "mylink.com";
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load(Url);
var table = doc.DocumentNode.SelectSingleNode("//table");
var rows = table.SelectNodes("//tr");
if (rows != null && rows.Count > 0)
{
foreach (var row in rows)
{
var cells = row.SelectNodes("//td");
//do stuff
}
}
}
XML 文件格式如下:
<![CDATA[<table>
<tr>
<td>Name</td>
<td>LastName</td>
<td>Age</td>
<tr>
</table>
]]>
【问题讨论】:
-
always throws NullReferenceException while parsing table rows发生在哪一行?您的变量table是否包含任何内容或者是null?如果你取回table的一个节点,你的变量rows包含什么? -
@Codexer 它发生在我有用于解析行的代码的同一行。我试过调试,表似乎也为空:(
-
您是否尝试使用任何提供此功能的现有 Nuget 包来阅读 RSS 提要?由于我们不知道您想阅读哪个 URL,我们无法验证内容是否与您所说的完全一致。通过使用我们知道它可以工作的包,您至少可以验证该链接是否提供了可读的 RSS 提要。
-
您只发布了回复的一部分。里面的 CDATA 是 HTML 响应的 XML 响应吗?在提取 CDATA 数据之前,您首先必须获取父元素。
-
我通过将文件的内容下载到字符串来解决了这个问题。除了获取 xml 文件之外,我没有替换任何代码并且它运行良好:/ 我仍然需要删除CDATA,以前没有帮助。