【问题标题】:HTML Agility pack + Select node by its inner textHTML 敏捷包 + 通过其内部文本选择节点
【发布时间】:2014-08-14 19:40:20
【问题描述】:

我已经掌握了使用 html 敏捷包使用属性和 xpath 查找特定节点的窍门。问题是,我一直在为我的每个项目手动执行此操作(打开网站 html 并扫描具有我需要的文本的节点)。有没有办法通过其内部文本选择单个节点?这将使为内容方案相同但属性标签随时间改变值的网站编写更新脚本变得更加容易。提前致谢!

【问题讨论】:

    标签: c#-4.0 xpath html-agility-pack


    【解决方案1】:

    如果您提供了示例 HTML 会更好,但由于您没有提供,假设我们有包含此标记的 HTML:

    <body>
        <div class="foo">bar</div>
    </body>
    

    您可以使用 HtmlAgilityPack 的 SelectSingleNode() 和 XPath 通过其属性选择 &lt;div&gt;,如下所示:

    myHtmlDocument.DocumentNode.SelectSingleNode("//div[@class='foo']");
    

    或者您可以像这样通过内部文本选择相同的内容:

    myHtmlDocument.DocumentNode.SelectSingleNode("//div[.='bar']");
    

    希望对您有所帮助。

    【讨论】:

    • 如此简单的解决方案!我没有意识到您可以使用 xpath 直接查找节点的文本。我看到的每个示例都显示了获取所需文本的方法,但反之则不然。谢谢@har07,这正是我想要的。
    • 为什么要投反对票,需要解释一下吗?也许您会考虑类似//div[text()='bar'] 而不是//div[.='bar'] 之类的东西,不是吗?
    • @har07 你将如何编辑 div 的内容/值/src?
    猜你喜欢
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-26
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    • 2013-02-09
    相关资源
    最近更新 更多