PHP и XmlWriter меняют строку отступа

Я использую laravel 5 и пытаюсь вывести XML-файл с помощью XMLWRITER. Можно ли изменить строку отступа с «одного пробела» на «табуляцию»?

Мой фактический код:

    $xml = new \XMLWriter();
    $xml->openMemory();
    $xml->setIndent(4);
    $xml->startDocument('1.0','UTF-8','yes');
    $xml->startElement('immeuble');
    $xml->writeAttribute('nature-immeuble', 'test');
    $xml->startElement('adresse');
    $xml->writeAttribute('localite', 'Copropriete');
    $xml->writeAttribute('libelle-pays', 'France');
    $xml->startElement('cadastre');
        $xml->writeAttribute('section', 'AA');
        $xml->writeAttribute('numero', '0000');
        $xml->endElement();
        $xml->endElement();
    foreach($lots as $lot) {
        $xml->startElement('lot');
        $xml->writeAttribute('numero', $lot->id);
        $xml->writeAttribute('type', 'appartement');
        $designation = getDesignation2($lot->id);
        $xml->writeAttribute('designation', $designation);
        $xml->writeAttribute('batiment', substr($lot->etageLots->first()->etage->batiment->nom, 0, 5));
        $xml->writeAttribute('etage', $lot->etageLots->first()->etage->coeff_id);
        if (is_null($lot->tantieme_force)){
            $tantieme = round($lot->tantieme_calcul,0);
        }else{
            $tantieme = $lot->tantieme_force;
        }
        $xml->writeAttribute('milliemes-generaux', $tantieme.$base);
        $xml->endElement();
    }
    $xml->endElement();
    $xml->endDocument();

    $content = $xml->outputMemory();
    $xml = null;

    return response($content)->header('Content-Type', 'text/xml');

Это дало мне правильный xml, но каждая строка имеет отступ с одним пробелом, и на самом деле мне нужна таблица.

Можно ли изменить этот параметр?

Я видел строку с заданным отступом, но не нашел способа использовать ее с табулированием.

Спасибо за помощь.

Похоже на то, что $xml->setIndent(); ждет логическое значение, а не количество ожидаемого пространства, я не могу попробовать, но, возможно, php.net/manual/en/function.xmlwriter-set-indent-string.php - это то, что вы ищете

Frankich 08.04.2019 09:57

Можно ли установить табуляцию внутри строки с заданным отступом? Я не нахожу html-код для табуляции.

Furya 08.04.2019 10:01

Я не думаю, что это существует, но вы можете попробовать $xml->setIndentString("    ")

Frankich 08.04.2019 10:07

к сожалению, это не работает: ошибка в строке 3 в столбце 7: объект 'nbsp' не определен

Furya 08.04.2019 10:09

с $xml->setIndent(true); перед?

Frankich 08.04.2019 10:10

хм, тогда попробуй с одинарными кавычками

Frankich 08.04.2019 10:12

больше не ошибка, а только один пробел

Furya 08.04.2019 10:13
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
7
524
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы хотите сделать отступ с помощью табуляции, используйте его следующим образом:

$xml->setIndent(true);
$xml->setIndentString("\t");

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