2011-08-31 55 views
0

下面的代码:值之前结束的XML标记插入

// 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(); 

产地:

<?xml version="1.0"?> 
<attendee> 
    <row> 
    <attendee_id/>1 
    <attendee_name/>A 
    <attendee_initials/>A.1. 
    </row> 
</attendee> 

相反的:

<?xml version="1.0"?> 
<attendee> 
    <row> 
    <attendee_id>1</attendee_id> 
    <attendee_name>A</attendee_name> 
    <attendee_initials>A.1.</attendee_initials> 
    </row> 
</attendee> 

任何线索我要去的地方错了吗?

回答

1

要附加文本节点到行:

$nodename = $attendee->createElement($tag); 
    $nodename = $row->appendChild($nodename); 

    $nodevalue = $attendee->createTextNode($value); 
    $nodevalue = $row->appendChild($nodevalue); 

你要追加到刚才创建的元素。

$element = $attendee->createElement($tag); 
    $textNode = $attendee->createTextNode($value); 
    $element->appendChild($nodevalue); 
    $row->appendChild($element);