Я использую 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, но каждая строка имеет отступ с одним пробелом, и на самом деле мне нужна таблица.
Можно ли изменить этот параметр?
Я видел строку с заданным отступом, но не нашел способа использовать ее с табулированием.
Спасибо за помощь.
Можно ли установить табуляцию внутри строки с заданным отступом? Я не нахожу html-код для табуляции.
Я не думаю, что это существует, но вы можете попробовать $xml->setIndentString(" ")
к сожалению, это не работает: ошибка в строке 3 в столбце 7: объект 'nbsp' не определен
с $xml->setIndent(true);
перед?
хм, тогда попробуй с одинарными кавычками
больше не ошибка, а только один пробел
Если вы хотите сделать отступ с помощью табуляции, используйте его следующим образом:
$xml->setIndent(true);
$xml->setIndentString("\t");
Похоже на то, что
$xml->setIndent();
ждет логическое значение, а не количество ожидаемого пространства, я не могу попробовать, но, возможно, php.net/manual/en/function.xmlwriter-set-indent-string.php - это то, что вы ищете