Hey Malcolm,
This is probably what you are looking for.
//Creates XML string and XML document using the DOM
$dom = new DomDocument('1.0', 'UTF-8');
//add root
$root = $dom->appendChild($dom->createElement('Root'));
//add NodeA element to Root
$nodeA = $dom->createElement('NodeA');
$root->appendChild($nodeA);
// Appending attr1 and attr2 to the NodeA element
$attr = $dom->createAttribute('attr1');
$attr->appendChild($dom->createTextNode('some text'));
$nodeA->appendChild($attr);
/*
** insert more nodes
*/
$dom->formatOutput = true; // set the formatOutput attribute of domDocument to true
// save XML as string or file
$test1 = $dom->saveXML(); // put string in test1
$dom->save('test1.xml'); // save as file
For mode info, have a loot at the DOM Documentation.
To do what you want:
//Creates XML string and XML document using the DOM
$dom = new DomDocument('1.0', 'UTF-8');
//add root == jukebox
$jukebox = $dom->appendChild($dom->createElement('jukebox'));
for ($i = 0; $i < count($arrayWithTracks); $i++) {
//add track element to jukebox
$track = $dom->createElement('track');
$jukebox->appendChild($track);
// Appending attributes to track
$attr = $dom->createAttribute('source');
$attr->appendChild($dom->createTextNode($arrayWithTracks[$i]['source']));
$track->appendChild($attr);
$attr = $dom->createAttribute('artist');
$attr->appendChild($dom->createTextNode($arrayWithTracks[$i]['artist']));
$track->appendChild($attr);
$attr = $dom->createAttribute('album');
$attr->appendChild($dom->createTextNode($arrayWithTracks[$i]['album']));
$track->appendChild($attr);
$attr = $dom->createAttribute('title');
$attr->appendChild($dom->createTextNode($arrayWithTracks[$i]['title']));
$track->appendChild($attr);
}
$dom->formatOutput = true; // set the formatOutput attribute of domDocument to true
// save XML as string or file
$test1 = $dom->saveXML(); // put string in test1
$dom->save('test1.xml'); // save as file
Cheers