Вы не можете сами по себе. Синтаксический анализатор HTML решает, какие пробелы полезны, а какие оставить, а какие удалить. Я добавлю некоторые ссылки позже (если я смогу их найти), но, как и в движке браузера, в анализаторе HTML есть правила, определяющие, какие пробельные символы полезны.
Помните, что:
«Пробел» - это массовое существительное
, охватывающее различные символы, которые могут обрабатываться по-разному.
Сравните, что происходит с вашимresponseText
после того, как он прошел через анализатор HTML:
Посмотрите, как удаляются пробелы, определенные как бесполезные. Вы не можете использовать метод HTMLfile
, чтобы получить желаемый результат, так как к тому времени, когда HTML был проанализирован, уже слишком поздно;и нет настройки с поздней границей HTMLFile
или ранней границей MSHTML.HTMLDocument
, которая бы изменила это. Сначала вам придется обратиться к другим манипуляциям со строками. Например, вы можете заменить $ на .responseText
из Chr$(32)
на html-сущность
. Или используйте regex, как вы упомянули, чтобы сделать более эффективный набор замен.
Вы можете сгенерировать вышеприведенные выходные данные изображения с помощью:
Option Explicit
Public Sub ExamineHtmlWhenParsed()
Dim oDom As Object: Set oDom = CreateObject("htmlFile")
With CreateObject("MSXML2.ServerXMLHTTP")
.Open "GET", "https://docs.google.com/spreadsheets/d/1Yh6WlJTDxbOLPVaVgzn_mk2OAKYVUYgfnT5Wz-8odi4/gviz/tq?tqx=out:html&tq&gid=1", False
.send
oDom.body.innerHTML = .responseText
WriteTxtFile .responseText, "C:\Users\User\Desktop\input.txt"
WriteTxtFile oDom.body.innerHTML, "C:\Users\User\Desktop\parsed.txt"
End With
End Sub
Public Sub WriteTxtFile(ByVal aString As String, ByVal filePath As String)
Dim fso As Object, Fileout As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set Fileout = fso.CreateTextFile(filePath, True, True)
Fileout.Write aString
Fileout.Close
End Sub
Это даетрабочий пример браузер обработка пробелов.
В этом обсуждается это в содержании CSS.
Анализаторы VBA HTML будут старше, чемтекущий уровень жизни HTML5, но текущий стандарт здесь . Вы можете просмотреть ответы, данные на этот вопрос и соответствующие комментарии, например:
@ JasonWoof: Спецификация HTML5 говорит, что браузеры должны свернуть только 5 (ascii) пробельных символов (пробел,tab, cr, lf, ff).