Pergunta

Eu gostaria de saber se existe uma maneira simples de analisar HTML em vb.net. Eu sei que o HTML não é subconjunto sctrict de XML, mas seria bom se pudesse ser tratada dessa forma. Existe alguma coisa lá fora, que me deixou analisar HTML em um XML-like forma VB.net?

Foi útil?

Solução

Gosto Html agilidade embalar - é muito desenvolvedor amigável, livre e de código-fonte está disponível.

Outras dicas

'add prog ref também: Microsoft.mshtml

', em seguida, na página:

Imports mshtml

Function parseMyHtml(ByVal htmlToParse$) As String
    Dim htmlDocument As IHTMLDocument2 = New HTMLDocumentClass()
    htmlDocument.write(htmlToParse)
    htmlDocument.close()

    Dim allElements As IHTMLElementCollection = htmlDocument.body.all

    Dim allInputs As IHTMLElementCollection = allElements.tags("a")
    Dim element As IHTMLElement
    For Each element In allInputs
        element.title = element.innerText
    Next

    Return htmlDocument.body.innerHTML
End Function

Como encontrado aqui :

Se o seu HTML segue padrões XHTML, você pode fazer um monte de análise e processamento usando as classes System.XML namespace.

Se, por outro lado, se o que você está de análise é o que os desenvolvedores web se referem como "tag sopa", você vai precisar de um analisador de terceiros como o HTML agilidade pack .

Isso pode ser apenas uma solução parcial para o problema, se você está tentando descobrir como um navegador irá interpretar o seu HTML como cada parses navegador tag sopa de forma ligeiramente diferente.

Não use agilidade pack, basta usar biblioteca mshtml para acessar o dom, isso é o que isto é, os usos e é ótimo para passar por elementos HTML.

pacote

Agility é Hackie desagradável e desnecessariamente, se você me perguntar, mshtml é o caminho a percorrer. Olhe-se no MSDN.

É bem formado? Se o HTML é na verdade bem formado, então ele pode ser analisado como XML. Se for tag sopa e há elementos não fechadas e como eu acho que você teria que caçar em torno de uma solução de terceiros.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top