Hallo phpers,

Ik ben bezig te proberen XML feeds uit te lezen van een affiliate partner.

Het nadeel is dat deze partner verschillende opbouwen erop na houd van zijn XML. Eigenlijk wil ik uit een database alle velden halen en dan gaan vergelijken met de inhoud van een XML file.

Dit is wat ik nu heb:

<?php

include('config.php');
$xmlDoc = new DOMDocument();
$xmlfeeds = $mysqli->get('SELECT * FROM xmlfeeds');

foreach($xmlfeeds as $xmlfeed)
{
$xmlDoc->load($xmlfeed['url_feed']);
$x=$xmlDoc->getElementsByTagName('product');
foreach($x as $item)
{
//$mysqli->put('REPLACE INTO landen WHERE naam="'..'"');
$item_title = $item->getElementsByTagName($xmlfeed['title']);
$title =
$item_link = $item->getElementsByTagName($xmlfeed['link'])->item(0)->childNodes->item(0)->nodeValue;
//$item_desc = $item->getElementsByTagName($xmlfeed['description'])->item(0)->childNodes->item(0)->nodeValue;
//$acco_type = $item->getElementsByTagName($xmlfeed['acco_type'])->item(0)->childNodes->item(0)->nodeValue;
$acco_name = $item->getElementsByTagName($xmlfeed['acco_name'])->item(0)->childNodes->item(0)->nodeValue;
$img_small = $item->getElementsByTagName($xmlfeed['img_small'])->item(0)->childNodes->item(0)->nodeValue;
foreach($item->getElementsByTagName('field') as $field)
{
if($field->getAttribute('name') == $xmlfeed['country'])
{
$country = $field->nodeValue;
}
if($field->getAttribute('name') == $xmlfeed['regio'])
{
$regio = $field->nodeValue;
}
if($field->getAttribute('name') == $xmlfeed['city'])
{
$city = $field->nodeValue;
}
if($field->getAttribute('name') == $xmlfeed['min_price'])
{
$min_price = $field->nodeValue;
}
if($field->getAttribute('name') == $xmlfeed['img_small'])
{
$img_small = 'test';
}
}
echo $country . '<br />';
echo $regio . '<br />';
echo $city . '<br />';
echo $img_small;
echo '<img src="'.$img_small.'">';
echo '<a href="'.$item_link.'">Vakantie boeken? klik hier...</a><br /><br />';
}
}


?>

Hopelijk kan iemand met verder helpen.
Tip: transformeer met XSLT eerst alle XML-bestanden naar één bruikbaar formaat die jij zelf intern gebruikt.

Vervolgens kun je vrij eenvoudig vergelijkingen gaan doen, je hebt dan nog maar 1 XML-formaat om te vergelijken met de data in jouw database. Deze XML kun je uiteraard ook met XSLT direct omzetten naar SQL om dan de database de boel te laten vergelijken. Scheelt je weer in de performance. Hou wel de veiligheid in de gaten, SQL-injection kan dan via de XML plaatsvinden.
Bedankt voor de tip. Ik zal het eens uitzoeken en kijken of ik er uit kan komen ;).

Reageren