Kliki, et näha millise XML'i allolev kood valmistab
/**
* $entries on toodete massiiv.
*/
$entries = array();
$entries[0]['url'] = 'http://minu-domeen.ee/mobiiltelefon-nokia-6600-slide-black-47681';
$entries[0]['image-url'] = 'http://minu-domeen.ee/pildid/mobiiltelefon-nokia-6600-slide-black-47681.jpg';
$entries[0]['title'] = 'Mobiiltelefon Nokia 600 Slide Black';
$entries[0]['summary'] = 'Nokia 6600 Slide on rohkem kui lihtsalt stiilne vidin - see on tõeline multimeedia keskus!';
$entries[0]['updated'] = 1263130943; // Peab olema UNIX_TIMESTAMP täisarv
$entries[0]['category'] = array('Telefon','Mobiiltelefon','Liugklapiga mobiiltelefon');
$entries[0]['param']['price'] = '3790.50';
$entries[0]['param']['price-old'] = '4349.00';
$entries[0]['param']['delivery-cost'] = 39;
$entries[0]['param']['delivery-time'] = 6;
$entries[0]['param']['amount-in-stock'] = 12;
$entries[0]['param']['brand'] = 'Nokia';
$entries[0]['param']['sku'] = '00012345678905,NOKIA6600BLACK,9780674027954';
$obj = new SopsoFeedCreator('minu-domeen.ee', 'minu-domeen.ee XML Feed', $entries);
class SopsoFeedCreator {
/**
* @param string $strAuthor
* @param string $strTitle
* @param array $entries
*/
public function __construct($strAuthor, $strTitle, array $entries) {
try {
set_error_handler(array($this,'HandleError'), E_ALL);
$objWriter = new XMLWriter();
// Määrame ajavööndi
if ((function_exists('date_default_timezone_set')) && (!ini_get('date.timezone')))
date_default_timezone_set('Europe/Tallinn');
// Saadame väljundi kohe kasutajale või kirjutame puhvrisse
// $objWriter->openURI('php://output');
$objWriter->openMemory();
$objWriter->startDocument('1.0','UTF-8');
$objWriter->startElement('feed');
// writeAttribute kirjutab xml parameetri xmlns="http://www.w3.org/2005/Atom"
$objWriter->writeAttribute('xmlns', 'http://www.w3.org/2005/Atom');
// startElement kirjutab xml elemendi <author>
$objWriter->startElement("author");
// writeElement kirjutab xml elemendi <name>$strAuthor</name>
$objWriter->writeElement('name', $strAuthor);
// endElement kirjutab xml elemendi </author>
$objWriter->endElement();
$strUrl = sprintf('http://%s%s',$_SERVER['HTTP_HOST'],$_SERVER['REQUEST_URI']);
$objWriter->writeElement('id', $strUrl);
$objWriter->startElement("link");
$objWriter->writeAttribute('href',$strUrl);
$objWriter->writeAttribute('rel','self');
$objWriter->endElement();
$objWriter->writeElement('title', $strTitle);
$objWriter->writeElement('updated', date('Y-m-d\TH:i:sP', time()));
foreach($entries as $entry) {
$objWriter->startElement('entry');
$strUrl = isset($entry['url']) ? $entry['url'] : false;
if(!$strUrl) throw new Exception('Toote veebiaadress on kohustuslik');
$objWriter->writeElement('id', $strUrl);
$objWriter->startElement("link");
$objWriter->writeAttribute('href', $strUrl);
$objWriter->writeAttribute('rel','alternate');
$objWriter->endElement();
$strImageUrl = isset($entry['image-url']) ? $entry['image-url'] : null;
if($strImageUrl) {
$objWriter->startElement("link");
$objWriter->writeAttribute('href',$strImageUrl);
$objWriter->writeAttribute('rel','related');
$objWriter->writeAttribute('type','image/*');
$objWriter->endElement();
}
$strTitle = isset($entry['title']) ? $entry['title'] : false;
if(!$strTitle) throw new Exception('Toote nimetus on kohustuslik');
$objWriter->writeElement('title', $strTitle);
$strSummary = isset($entry['summary']) ? $entry['summary'] : false;
if($strSummary) $objWriter->writeElement('summary', $strSummary);
$intUpdated = isset($entry['updated']) ? $entry['updated'] : false;
if(!$intUpdated) throw new Exception('Toote uuendamise aeg on kohustuslik');
$objWriter->writeElement('updated', date('Y-m-d\TH:i:sP', $intUpdated));
$arrCategory = isset($entry['category']) ? $entry['category'] : false;
if($arrCategory)
foreach($arrCategory as $value) {
$objWriter->startElement('category');
$objWriter->writeAttribute('term',$value);
$objWriter->endElement();
}
$arrParams = isset($entry['param']['price']) ? $entry['param'] : false;
if(is_array($arrParams)) {
$objWriter->startElement('content');
$objWriter->writeAttribute('type','application/xml');
foreach($arrParams as $name => $value) {
$objWriter->startElement('param');
$objWriter->writeAttribute('name',$name);
// writeRaw kirjutab teksti
$objWriter->writeRaw($value);
$objWriter->endElement();
}
} else {
throw new Exception('"price" parameeter on kohustuslik igal tootel');
}
//end content
$objWriter->endElement();
//end entry
$objWriter->endElement();
}
// End atom
$objWriter->endElement();
$objWriter->endDocument();
// Kui tahame otse kautajale väljastada
// $objWriter->flush();
// Kui kirjutasime XML'i puhvrisse, siis nii saab kätte
$strXml = $objWriter->flush();
if($strXml) {
// Siin on see koht, kus saaks xml'i näiteks faili salvestada,
// selle asemel, et kasutajale väljastada
header("Content-Type: application/xml");
echo $strXml;
}
} catch (Exception $objException) {
echo sprintf('ERROR: %s on line %d', $objException->getMessage(), $objException->getLine());
}
}
private function HandleError($intCode,$strMessage,$strFile = null,$intLine = null, array $arrContext = null) {
throw new Exception($strMessage, $intCode);
}
}