Я только что сделал это некоторое время назад, я не могу точно понять, что происходит не так.Но я могу предоставить вам функцию, которую я создал для сайта.
Эта функция работала на 100% нормально и, как и ожидалось.Он создал идеальный документ XML и отлично отформатировал его.Я надеюсь, что это поможет вам найти вашу проблему.
function create_xml_file()
{
/* create a dom document with encoding utf8 */
$domtree = new DOMDocument('1.0', 'utf-8');
/* create the root element of the xml tree */
/* Data Node */
$xmlRoot = $domtree->createElement("data");
/* append it to the document created */
$xmlRoot = $domtree->appendChild($xmlRoot);
/* Set our Prices in our <data> <config> node */
$config_node = $domtree->createElement("config");
$config_node = $xmlRoot->appendChild($config_node);
// Add - node to config
$config_node->appendChild($domtree->createElement('config_node', '123456'));
$config_node->appendChild($domtree->createElement('some_other_data', '123456'));
/* Create prices Node */
$price_node = $domtree->createElement('price');
$price_node = $config_node->appendChild($price_node);
/* Black Price Node */
$black_node = $price_node->appendChild($domtree->createElement('black'));
foreach ($p->List_all() as $item):
if ($item['color'] == 'black'):
$black_node->appendChild($domtree->createElement($item['type'], $item['price']));
endif;
endforeach;
/* Create galleries Node */
$galleries_node = $domtree->createElement("galleries");
$galleries_node = $xmlRoot->appendChild($galleries_node);
foreach ($i->List_all() as $image):
/* Our Individual Gallery Node */
$gallery_node = $domtree->createElement("gallery");
$gallery_node = $galleries_node->appendChild($gallery_node);
$gallery_node->appendChild($domtree->createElement('name', $image['name']));
$gallery_node->appendChild($domtree->createElement('filepath', $image['filepath']));
$gallery_node->appendChild($domtree->createElement('thumb', $image['thumb']));
endforeach;
/* Format it so it is human readable */
$domtree->preserveWhiteSpace = false;
$domtree->formatOutput = true;
/* get the xml printed */
//echo $domtree->saveXML();
$file = 'xml/config.xml';
$domtree->save($file);
}
Я надеюсь, что это поможет вам найти ваш ответ.Я прокомментировал это хорошо для легкого понимания.