htmlagilitypack 노드를 htmlelement로 변환합니다.

.net html-agility-pack

문제

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

내가 어떻게 할 수 있니?

수락 된 답변

나는 HtmlElement 를 생성 한 다음 HtmlNode 에서 속성과 내부 HTML을 복사하는 것이 유일한 방법이라고 생각한다.

이것에 대한 확장 메소드가 있습니다. 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

그리고 그것을 사용하려면 다음과 같이 할 수 있습니다 :

<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

하지만 참고하시기 바랍니다, 나는 VB.NET에 익숙하지 않습니다. C #의 코드 예제를 먼저 작성한 다음 VB, NET으로 변환했습니다.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.