PHP simpleXML, как сохранить файл отформатированным способом?

Поскольку вы не предоставили никакого кода вместе с вашим ответом, я нарисую его, который, я думаю, будет, по крайней мере, похож на то, что вы используете - это создает массив, проходит по каждой строке таблицы и добавляет элемент подмассива с ключом, который находится во втором столбце. Из-за того, что он добавляет новый элемент каждый раз, он не перезаписывает предыдущий.

$array = [];
foreach ($table as $row) {
  $array[$row[1]][] = $row[0];
}
ksort($array); // Sorts the array so that the keys are in ascending order
85
задан Gumbo 28 April 2009 в 17:29
поделиться

3 ответа

Вы можете использовать класс DOMDocument для переформатирования вашего кода:

$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($simpleXml->asXML());
echo $dom->saveXML();
142
ответ дан 24 November 2019 в 08:15
поделиться

Use dom_import_simplexml to convert to a DomElement. Then use its capacity to format output.

$dom = dom_import_simplexml($simple_xml)->ownerDocument;
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
echo $dom->saveXML();
17
ответ дан 24 November 2019 в 08:15
поделиться

Решение Гамбо помогает. Вы можете работать с simpleXml выше, а затем добавить его в конце, чтобы отобразить и / или сохранить его с форматированием.

Код ниже повторяет его и сохраняет в файл (см. Комментарии в коде и удалите все, что вам не нужно. ):

//Format XML to save indented tree rather than one line
$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($simpleXml->asXML());
//Echo XML - remove this and following line if echo not desired
echo $dom->saveXML();
//Save XML to file - remove this and following line if save not desired
$dom->save('fileName.xml');
28
ответ дан 24 November 2019 в 08:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: