У меня есть html код в строке Excel, которая содержит несколько тегов, подобных этому:
<img alt="glass" data-lazy-sizes="(max-width: 785px) 100vw, 785px" data-lazy-src="https://example.com/wp-content/uploads/2020/01/glass.jpg" data-lazy-srcset="https://example.com/wp-content/uploads/2020/01/glass-50x25.jpg 50w, https://example.com/wp-content/uploads/2020/01/glass-200x102.jpg 200w, https://example.com/wp-content/uploads/2020/01/glass-300x153.jpg 300w, https://example.com/wp-content/uploads/2020/01/glass-400x204.jpg 400w, https://example.com/wp-content/uploads/2020/01/glass-600x306.jpg 600w, https://example.com/wp-content/uploads/2020/01/glass-768x391.jpg 768w, https://example.com/wp-content/uploads/2020/01/glass.jpg 785w" height="400" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20785%20400'%3E%3C/svg%3E" width="785" />
, и мне нужно создать пользовательскую функцию для удаления всех атрибутов, кроме alt и data-lazy-sr c, чтобы быть таким:
<img alt="glass" data-lazy-src="https://example.com/wp-content/uploads/2020/01/glass.jpg" />
Я попробовал регулярное выражение безуспешно (это возможно, но сложно и не рекомендуется). Сейчас я использую html синтаксический анализ.
Мой первоначальный подход заключается в следующем:
Function clearIMGattributes(content As String) As String
Dim doc As MSHTML.HTMLDocument
Set doc = New MSHTML.HTMLDocument
Dim documentIMGs As MSHTML.IHTMLElementCollection
Set documentIMGs = Table.getElementsByTagName("img")
For Each documentIMG In documentIMGs
'Here I should check all the attributes
'and remove those that are not src and alt
'and next is to somehow apply changes in variable doc
'but I honestly don't know how to perform
'these steps
Next documentIMG
clearIMGattributes = doc
End Function
Более чем уверен, что другой подход будет проще.
Любая помощь будет оценен