преобразовать узел htmlagilitypack в htmlelement .net - PullRequest
0 голосов
/ 25 февраля 2012

Я только что использовал htmlagilitypack, чтобы извлечь всю ссылку как htmlnode из html документа, но мне нужно, чтобы это возвращалось из моей функции htmlelement

Dim Tags As HtmlNodeCollection = docNode.SelectNodes(strXpath)
  Dim ListResult As New List(Of HtmlElement)
  For Each Tag As HtmlNode In Tags
     ListResult.Add(Tag.Element)
 Next
Return Nothing

Как я могу это сделать?

1 Ответ

2 голосов
/ 03 марта 2012

Я подозреваю, что единственный способ сделать это - создать HtmlElement, а затем скопировать атрибуты и внутренний HTML-код из HtmlNode.

Вот метод расширения для этого; он принимает ссылку на экземпляр System.Windows.Forms.HtmlDocument для создания нового HtmlElement:

<System.Runtime.CompilerServices.Extension> _
Public Shared Function ToHtmlElement(node As HtmlNode, doc As System.Windows.Forms.HtmlDocument) As HtmlElement
    Dim element = doc.CreateElement(node.Name)
    For Each attribute As HtmlAttribute In node.Attributes
        element.SetAttribute(attribute.Name, attribute.Value)
    Next
    element.InnerHtml = node.InnerHtml

    Return element
End Function

И использовать его вы могли бы так:

Dim browser As New WebBrowser()
browser.Navigate("about::blank")

Dim Tags As HtmlNodeCollection = docNode.SelectNodes(strXpath)
  Dim ListResult As New List(Of HtmlElement)
  For Each Tag As HtmlNode In Tags
     ListResult.Add(Tag.ToHtmlElement(browser.Document))
 Next
Return Nothing

Но обратите внимание, я не слишком знаком с VB.NET, я сначала создал примеры кода для C #, а затем перевел их на VB, NET.

...