1

我正在尝试使用 HTML Agility Pack 解析 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);
4

1 回答 1

2

Html Agility Pack XPATH 实现根本不支持涉及名称空间的查询。

该库是开源的,因此可以更改,但这需要大量重写才能添加此功能。

于 2013-09-09T12:07:40.943 回答