Reputation: 171
The following code:
// Read Attendees Data (For Organisation)
$attendServ = new AttendeeService();
$attendData = $attendServ->getAllActiveAttendeeByOrg($organisation_id);
$attendee = new DOMDocument('1.0');
$attendee->formatOutput = true;
$root = $attendee->createElement('attendee');
$root = $attendee->appendChild($root);
for ($i=0;$i<count($attendData);$i++) {
$row = $attendee->createElement('row');
$row = $root->appendChild($row);
foreach ($attendData[$i] as $tag=>$value)
{
$nodename = $attendee->createElement($tag);
$nodename = $row->appendChild($nodename);
$nodevalue = $attendee->createTextNode($value);
$nodevalue = $row->appendChild($nodevalue);
}
}
// Test Organisation Output
header ("Content-Type:text/xml");
echo $attendee->saveXML();
Produces:
<?xml version="1.0"?>
<attendee>
<row>
<attendee_id/>1
<attendee_name/>A
<attendee_initials/>A.1.
</row>
</attendee>
Instead of:
<?xml version="1.0"?>
<attendee>
<row>
<attendee_id>1</attendee_id>
<attendee_name>A</attendee_name>
<attendee_initials>A.1.</attendee_initials>
</row>
</attendee>
Any clue where I am going wrong?
Upvotes: 0
Views: 47
Reputation: 943630
You are appending the text node to the row:
$nodename = $attendee->createElement($tag);
$nodename = $row->appendChild($nodename);
$nodevalue = $attendee->createTextNode($value);
$nodevalue = $row->appendChild($nodevalue);
You want to append it to the element you just created.
$element = $attendee->createElement($tag);
$textNode = $attendee->createTextNode($value);
$element->appendChild($nodevalue);
$row->appendChild($element);
Upvotes: 1