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