2015-11-03 31 views
0

我从数据库中查询检索一组的联系人记录产生循环XML,然后我需要生成返回给浏览器的XML响应。PHP - 使用DOM库

PHP的循环,检索的记录是这样的:

foreach($contacts as $contact){ 

     $firstName = $record->getField('first') ; 
     $lastName = $record->getField('last') ; 


    $recnum++; } 

,我需要生成看起来像这样的XML:

<?xml version="1.0" encoding="utf-8"?> 
<contacts> 
    <contact> 
     <first_name>Penny</first_name> 
     <last_name>Lancaster</last_name> 
    </contact> 
    <contact> 
     <first_name>Geoff</first_name> 
     <last_name>McDermott</last_name> 
    </contact> 
</contacts> 

我已经能够创建一个单一的硬编码使用前XML响应:

$doc = new DOMDocument('1.0', 'utf-8'); 
$doc->formatOutput = true; 

$root = $doc->createElement('error'); 
$doc->appendChild($root); 

$desc = $doc->createElement('description', $error); 
$root->appendChild($desc); 

echo $doc->saveXML(); 

,但我不能工作了语法纳入本一个循环并动态生成XML。

+0

PHP和XML是亲密的朋友。看到这个:http://php.net/manual/en/book.xml.php –

回答

0

这很简单:

$doc = new DOMDocument('1.0', 'utf-8'); 
$doc->formatOutput = true; 
$contactsElement = $doc->createElement('contacts'); 

foreach($contacts as $contact){ 
    // your loop, is working? What is $record? 
    $firstName = $record->getField('first') ; 
    $lastName = $record->getField('last') ; 
    $recnum++; // is useful for something? 

    $contactElement = $doc->createElement('contact'); 
    $firstNameElement = $doc->createElement('first_name', $firstName); 
    $lastNameElement = $doc->createElement('last_name', $lastName); 

    $contactElement->appendChild($firstNameElement); 
    $contactElement->appendChild($lastNameElement); 
    $contactsElement->appendChild($contactElement); 
} 

echo $doc->saveXML();