Я использую расширение DOM в PHP для создания некоторых документов HTML, и я хочу, чтобы вывод был хорошо отформатирован (с новыми строками и отступами), чтобы его можно было прочитать из многих тестов, которые я сделал:
- "formatOutput = true" вообще не работает с saveHTML (), только saveXML ()
- Даже если я использовал saveXML (), он все равно работает только с элементами, созданными с помощью DOM, но не с элементами, которые включены в loadHTML (), даже с «preserveWhiteSpace = false»
Если кто-то знает по-другому, я бы очень хотел узнать, как они заставили его работать.
Итак, у меня есть документ DOM, и я использую saveHTML () для вывода HTML. Поскольку он поступает из DOM, я знаю, что он действителен, нет необходимости "опрятно" или проверять его каким-либо образом.
Я просто ищу способ получить красиво отформатированный вывод из вывода, полученного из расширения DOM.
NB. Как вы уже догадались, я не хочу использовать расширение Tidy как: а) оно делает гораздо больше, чем оно мне тоже нужно (разметка уже действительна) и б) фактически вносит изменения в содержимое HTML (например, тип документа HTML 5 и некоторые элементы).
Продолжение:
ОК, с помощью приведенного ниже ответа я выяснил, почему не работает расширение DOM. Хотя данный пример работает, он все еще не работает с моим кодом. С помощью этого комментария я обнаружил, что если у вас есть какие-либо текстовые узлы, где isWhitespaceInElementContent () имеет значение true, форматирование не будет применяться после этой точки. Это происходит независимо от того, является ли preserveWhiteSpace ложным. Решение состоит в том, чтобы удалить все эти узлы (хотя я не уверен, может ли это оказать негативное влияние на фактический контент).