Я пытаюсь создать XML-фид, в основном из списка вакансий. Сейчас у меня 39 списков вакансий в базе данных, и я создаю XML с помощью SimpleXML, и он работает отлично, за исключением того, что он выводит самую последнюю запись из базы данных в xml. Я уверен, что есть простое решение.Сгенерировать XML из динамического PHP с помощью цикла foreach
Ознакомившись с кодом, я хочу, чтобы каждое задание находилось внутри элемента <job>
, и я хочу создать новый элемент <job>
для каждого задания. Все они заключены внутри одного элемента <source>
. Вот мой PHP код, и ниже, что является результатом я получаю - вы увидите, что есть только одна строка возвращение вместо всех 39.
<?php
Header('Content-type: text/xml');
class SimpleXMLExtended extends SimpleXMLElement {
public function addCData($cdata_text) {
$node = dom_import_simplexml($this);
$no = $node->ownerDocument;
$node->appendChild($no->createCDATASection($cdata_text));
}
}
$jobs = $dbjobs->find(array('job_title' => array('$exists' => true), 'job_title' => array('$nin'=> array('',' ', null))));
$jobs = iterator_to_array($jobs);
$xml = new SimpleXMLExtended('<source/>');
$i = 0;
foreach ($jobs as $job) {
$i++;
$xml->job = NULL;
$j = $xml->job;
$j->referencenumber = NULL;
$j->referencenumber->addCData($job['id']);
$j->title = NULL;
$j->title->addCData($job['job_title']);
$j->url = NULL;
$j->url->addCData('http://www.site.com/joblisting.php?jl=' . $job['id']);
$j->description = NULL;
$j->description->addCData($job['job_description']);
$j->company = NULL;
$j->company->addCData($job['company']);
$j->city = NULL;
$j->city->addCData($job['city']);
$j->state = NULL;
$j->state->addCData($job['state']);
$j->postalcode = NULL;
$j->postalcode->addCData('');
$j->country = NULL;
$j->country->addCData('US');
$j->date = NULL;
$j->date->addCData(date("Y-m-d", $job['added']->sec));
$j->site = NULL;
$j->site->addCData('site.com');
$j->count = NULL;
$j->count->addCData($i);
}
print($xml->asXML());
?>
А вот пример ответа я получаю:
<source>
<job>
<referencenumber>230257</referencenumber>
<title>Home Phone Representative</title>
<url>http://www.site.com/joblisting.php?jl=230257</url>
<description></description>
<company>Media LLC</company>
<city>San Jose</city>
<state>CA</state>
<postalcode></postalcode>
<country>US</country>
<date>2013-09-16</date>
<site>site.com</site>
<count>39</count>
</job>
</source>
Как вы можете видеть, он заполняется просто отлично, но мне нужны все списки, а не только последний в цикле. Заранее благодарны за Вашу помощь.
my bad: mickro is right: это addChild ('job'), а не ('source'). – Johanness