Как удалить ВСЕ HTML-теги с помощью MSHTML Parser в VB6?

Как удалить ВСЕ HTML-теги с помощью MSHTML Parser в VB6?

3 ответа

Решение

Это адаптировано из кода в CodeGuru. Большое Большое спасибо оригинальному автору: http://www.codeguru.com/vb/vb_internet/html/article.php/c4815

Проверьте исходный источник, если вам нужно скачать HTML из Интернета. Например:

Set objDocument = objMSHTML.createDocumentFromUrl("http://google.com", vbNullString)

Мне не нужно загружать заглушку HTML из Интернета - у меня уже была заглушка в памяти. Таким образом, первоисточник не совсем подходит для меня. Моя главная цель состоит в том, чтобы квалифицированный парсер DOM убрал для меня HTML из контента, созданного пользователем. Кто-то скажет: "Почему бы просто не использовать RegEx для удаления HTML-кода?" Удачи с этим!

Добавить ссылку на: Microsoft HTML Object Library

Это тот же HTML-парсер, который запускает Internet Explorer (IE) - пусть начинается хеклинг. Ну, черт возьми...

Вот код, который я использовал:

Dim objDocument As MSHTML.HTMLDocument
Set objDocument = New MSHTML.HTMLDocument

'NOTE: txtSource is an instance of a simple TextBox object
objDocument.body.innerHTML = "<p>Hello World!</p> <p>Hello Jason!</p> <br/>Hello Bob!"
txtSource.Text = objDocument.body.innerText

Результирующий текст в tx tSource.Text - это содержимое моего пользователя, лишенное всего HTML. Чистота и ремонтопригодность - нет пути Ктулху для меня.

В одну сторону:

Function strip(html As String) As String
    With CreateObject("htmlfile")
        .Open
        .write html
        .Close
        strip = .body.outerText
    End With
End Function

За

?strip("<strong>hello <i>wor<u>ld</u>!</strong><foo> 1234")
hello world! 1234
Public Function ParseHtml(ByVal str As String) As String
    Dim Ret As String, TagOpenend As Boolean, TagClosed As Boolean
    Dim n As Long, sChar As String
    For n = 1 To Len(str)
        sChar = Mid(str, n, 1)
        Select Case sChar
            Case "<"
                TagOpenend = True
            Case ">"
                TagClosed = True
                TagOpenend = False
            Case Else
                If TagOpenend = False Then
                    Ret = Ret & sChar
                End If
        End Select
    Next
    ParseHtml = Ret
End Function

Это простая функция, которую я использую для собственного использования.использовать окно отладки

?ParseHtml( "

test")

тестовое задание

Я надеюсь, что это поможет без использования внешних библиотек

Другие вопросы по тегам