使用 XPath - 命名空间的 C# HTML 解析
本文关键字:HTML 解析 命名空间 XPath 使用 | 更新日期: 2023-09-27 18:30:29
>我正在尝试使用 HTML 敏捷包解析 HTML 页面。我使用了一个名为XPath Checker的Firefox扩展,我相当确定表达式是正确的。但是,当我运行代码时,.NET 告诉我"需要命名空间管理器或 XsltContext。此查询具有前缀、变量或用户定义的函数。
这很好,除了我不知道从哪里获取 Xslt 或所述命名空间。如何确定我需要什么命名空间?
作为参考,这是我的代码(我使用 MVC4):
List<Post> posts = new List<Post>();
// Use this to count how many nodes to get
int postNodesAmount = doc.DocumentNode.SelectNodes("//div[@class='"post_block no_sidebar'" ]").Count;
for (int i = 1; i <= postNodesAmount; i++)
{
Post newPost = new Post();
string newContent = doc.DocumentNode.SelectSingleNode("id('pane_forums:posts')/x:div/x:div[" + i + "]/x:div/x:div/x:div/x:p[1]").InnerText;
newPost.Content = newContent;
posts.Add(newPost);
}
return View(posts);
Html Agility Pack XPATH 实现根本不支持涉及命名空间的查询。
该库是开源的,因此可以更改,但这需要相当多的重写才能添加此功能。