获取href属性值时HTMLAgilityPack中存在错误。C#

获取href属性值时HTMLAgilityPack中存在错误。C#,c#,attributes,html-agility-pack,C#,Attributes,Html Agility Pack,在HTMLAgilityPack中发现了一个严重的错误,其中一些属性值没有完全返回-它们被截断。具体来说,当尝试从锚标记中获取href值时,只返回根域,后面的任何内容(查询字符串)都将被完全忽略。有人知道一个好的解决方法吗 例如: node.SelectSingleNode("//link").Attributes["href"].Value 返回 而不是返回&ffkid=66534&site=data:http%3A%2F%2Fwww.othersit

在HTMLAgilityPack中发现了一个严重的错误,其中一些属性值没有完全返回-它们被截断。具体来说,当尝试从锚标记中获取href值时,只返回根域,后面的任何内容(查询字符串)都将被完全忽略。有人知道一个好的解决方法吗

例如:

node.SelectSingleNode("//link").Attributes["href"].Value
返回 而不是返回&ffkid=66534&site=data:http%3A%2F%2Fwww.othersite.com%2Frss%2F

链接看起来是这样的

<a class="tlink" href="https://www.example.com/mypage.php?_src=ffk_title&amp;ffkid=66534&amp;site=data:http%3A%2F%2Fwww.othersite.com%2Frss%2F" target="_blank">Click to get feed</a>


不管怎样-现在,我将只获取链接标记并使用旧方法进行解析-如果href标记中有非典型字符,我想HTMLAgilityPack会感到困惑。我希望这只是我做错了什么,但这种怪癖真的很让人伤心。

对于锚定标记,应该使用
//XPath表达式:

node.SelectSingleNode("//a").Attributes["href"].Value;
此外,如果需要使用特定类引用锚点,可以使用:

node.SelectSingleNode("//a[@class='tlink']").Attributes["href"].Value;

可以提供一个工作示例。

您能提供实际代码吗<代码>//link
不是
//a
,如果我将其更改为
doc.DocumentNode.SelectSingleNode(“//a”).Attributes[“href”].Value
它将提供您期望的完整URL。这是使用v1.11.31。我知道我做了什么。我是在重复使用链接代码,而不是锚定标记,由于部分工作正常,我认为新的HTMLAgilityWebPath的DotNetCore版本有问题。我将其更改为“//a”,效果很好。然而,有一个问题。该节点是另一个节点的子节点-不确定XPATH解析器为何会查看父节点的父节点(ie)以获取文档中唯一的链接标记。@MC9000 HtmlAgilityPack使用XPATH语法。在XPath中,路径开头的
/
表示“查找文档中的任意位置”。所以<代码> //a < /代码>会发现文档中的所有锚,即使你从中间的某个节点开始。如果只想向下查看当前节点的子体,请使用
/
作为前缀,例如
//a
。如果您只想查看当前节点的直接子节点,请完全删除前缀,例如,
a
。谢谢。虽然无论语法如何,它都被约束在节点对象上(因此//将是“find anywhere”,但对于当前的节点对象),但对我来说,这将是最符合逻辑的实现。我错了。