使用 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);

使用 XPath - 命名空间的 C# HTML 解析

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

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