DOM formatOutput not nice, 1 lined
Posted: Sat May 23, 2009 8:54 am
Why doesn't PHP's DOM XML output xml-files like they should, with proper hierarchy, instead it outputs everything on one single line. I am trying to create a simple xml guestbook script. Here's my code:
XML:
PHP:
Edit: Updated the XML-document because it was misleading.
XML:
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<entries><entry><id>1</id><date>2009-05-26</date><time>20.25.17</time><name>He-Man</name><email>he-man@eterniapostoffice.com</email><message>Lorem ipsum dolor sit amet.</message><ip>127.0.0.1</ip><useragent>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)</useragent></entry><entry><id>3</id><date>2009-05-26</date><time>20.26.11</time><name>He-Man</name><email>he-man@eterniapostoffice.com</email><message>Lorem ipsum dolor sit amet.</message><ip>127.0.0.1</ip><useragent>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)</useragent></entry></entries>
Code: Select all
<?php
// User data array
$data = array (
'id' => (int) '0',
'date' => (string) date('Y-m-d'),
'time' => (string) date('H.i'),
'name' => (string) filter_var($_POST['txtname'], FILTER_SANITIZE_STRING),
'email' => (string) filter_var($_POST['txtemail'], FILTER_SANITIZE_EMAIL),
'message' => (string) filter_var($_POST['txtmessage'], FILTER_SANITIZE_STRING)
);
// Create a new XML-document
$xmldoc = new DOMDocument('1.0');
// Nice output format setting
$xmldoc->formatOutput = true;
// Load XML-document
$xmldoc->load('entries.xml');
// Count entries and set id to that
$entries = $xmldoc->getElementsByTagName('entry');
$data['id'] = (int) $entries->length;
// Select root node
$root = $xmldoc->firstChild;
// Create new entry
$newentry = $xmldoc->createElement('entry');
$newentry = $root->appendChild($newentry);
// ID
$newnode = $xmldoc->createElement('id');
$newnode = $newentry->appendChild($newnode);
$newtext = $xmldoc->createTextNode($data['id']);
$newtext = $newnode->appendChild($newtext);
// Date
$newnode = $xmldoc->createElement('date');
$newnode = $newentry->appendChild($newnode);
$newtext = $xmldoc->createTextNode($data['date']);
$newtext = $newnode->appendChild($newtext);
// Time
$newnode = $xmldoc->createElement('time');
$newnode = $newentry->appendChild($newnode);
$newtext = $xmldoc->createTextNode($data['time']);
$newtext = $newnode->appendChild($newtext);
// Name
$newnode = $xmldoc->createElement('name');
$newnode = $newentry->appendChild($newnode);
$newtext = $xmldoc->createTextNode($data['name']);
$newtext = $newnode->appendChild($newtext);
// Email
$newnode = $xmldoc->createElement('email');
$newnode = $newentry->appendChild($newnode);
$newtext = $xmldoc->createTextNode($data['email']);
$newtext = $newnode->appendChild($newtext);
// Save XML-document
$xmldoc->save('entries.xml');
// Destroy variables
unset($data);
unset($xmldoc);
unset($entries);
unset($entrycount);
unset($root);
unset($newentry);
unset($newnode);
unset($newtext);
?>