Berikut adalah cara melakukannya dengan DOM :
function createUserDetailsXml(array $result) {
$dom = new DOMDocument;
$dom->formatOutput = TRUE; // enable automatic indenting
$dom->loadXML('<users/>'); // set root node
foreach($result as $row) {
// create user-details node
$user = $dom->createElement('user-details');
// create and append details to user-details node
$user->appendChild(
$dom->createElement('user-id', $row['uid']));
$user->appendChild(
$dom->createElement('user-name', $row['userName']));
$user->appendChild(
$dom->createElement('user-points', $row['points']));
$user->appendChild(
$dom->createElement('image-url', $row['imageURL']));
$user->appendChild(
$dom->createElement('thumb-url', $row['thumbURL']));
// add user-details node to XML document, e.g. users node
$dom->documentElement->appendChild($user);
};
return $dom->saveXML(); // returns the formatted XML
};
Perhatikan bahwa fungsi mengharapkan Anda untuk meneruskan array hasil lengkap, jadi saya bisa mengujinya dengan:
$result = array(
array(
'uid' => 1,
'userName' => 'Gordon',
'points' => PHP_INT_MAX,
'imageURL' => 'http://example.com/gordon.jpg',
'thumbURL' => 'http://example.com/t_gordon.jpg'
),
array(
'uid' => 2,
'userName' => 'John <blink>"Frigging"</blink> Doe',
'points' => 0,
'imageURL' => 'http://example.com/johndoe.jpg',
'thumbURL' => 'http://example.com/t_johndoe.jpg'
)
);
echo createUserDetailsXml($result);
Fungsi tersebut kemudian akan kembali
<?xml version="1.0"?>
<users>
<user-details>
<user-id>1</user-id>
<user-name>Gordon</user-name>
<user-points>2147483647</user-points>
<image-url>http://example.com/gordon.jpg</image-url>
<thumb-url>http://example.com/t_gordon.jpg</thumb-url>
</user-details>
<user-details>
<user-id>2</user-id>
<user-name>John <blink>"Frigging"</blink> Doe</user-name>
<user-points>0</user-points>
<image-url>http://example.com/johndoe.jpg</image-url>
<thumb-url>http://example.com/t_johndoe.jpg</thumb-url>
</user-details>
</users>
Harap perhatikan bahwa DOM lolos dari karakter khusus dalam nama John Doe untuk Anda secara otomatis. DOM juga akan memastikan nama elemen XML (atau atribut jika Anda menggunakannya) valid secara sintaksis. Itu juga menambahkan XML Prolog.