【问题标题】:How to get elements inside of commented out code HtmlAgilityPack in VB.NET如何在 VB.NET 中获取注释掉的代码 HtmlAgilityPack 中的元素
【发布时间】:2014-06-20 15:30:00
【问题描述】:

有没有办法在 <!-- --> 注释块内的 html 上使用 HtmlAgilityPack?例如,如何定位 "//div.[@class='theClass']" 的内部文本,它位于这样的块内:

<!-- <div class="theClass'>Hello I am <span class="theSpan">some text.</span> </div>-->

所以我得到了

Hello I am some text.

我问的原因是因为我一直发现这一直返回 NULL,因为 div 位于 cmets 内:

htmlnodes = htmldoc.DocumentNode.SelectNodes("//div[@class='theClass']")

【问题讨论】:

    标签: vb.net html-agility-pack


    【解决方案1】:

    不幸的是,XPath 将评论节点内容视为纯文本,这意味着您不能像普通节点一样查询内容。

    一种可能的方法是将评论节点内容解析为另一个HtmlDocument,以便您可以从中查询,例如:

    'get desired comment node'
    Dim htmlnode As HtmlNode = htmldoc.DocumentNode.SelectSingleNode("//comment()[contains(., theClass)]")
    
    Dim comment As New HtmlDocument()
    'remove the outer <!--  --> so we have clean content'
    comment.LoadHtml(htmlnode.InnerHtml.Replace("<!--", "").Replace("-->", ""))
    'here you can use common XPath query again'
    Dim result As HtmlNode = comment.DocumentNode.SelectSingleNode("//div[@class='theClass']")
    
    'following line will print "Hello I am some text."'
    Console.WriteLine(result.InnerText)
    

    【讨论】:

    • 谢谢。以上确实有效,您回答了我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 2018-11-16
    • 2022-09-23
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多