XML - Import.
XML-data importeres til PHP med funktionen:
$xxx = simplexml_load_file( importeret XML-fil );
|
Selvom der er ret så stramme regler for, hvordan en XML-fil kan opbygges, kan der forekomme en del forskellige strukturelle kombinationer.
Kodemæssigt er det en udfordring at der er flere måder at håndtere kodningen på - ikke at der er flere måder at løse den samme situation på, men at der i betydelig udstrækning skal benyttes en specifik individuel motede for den enkelte strukturelle kombination.
Det synes at være en ufravigelig forudsætning for at få overblik over de forekommende strukturer i en XML-fil at den indledningsvis vises med 'print_r()'.
Al udtræk af data tager udgangspunkt i 'roden' (level 0) enten direkte eller via 'tagstier' (level 1 - x).
Ved kodning skal tagnavne der indeholder '-' (bindestreg) kodes som {'tag-navn'}.
// print_r
$rod = simplexml_load_file('http://www.nationalbanken.dk/_vti_bin/DN/DataService.svc/CurrencyRatesXML?lang=da');
echo "<pre>";
print_r($rod);
echo "</pre>";
|
Selvom XML-dataene kan udtrækkes til en variabel med individuelt navn er alle udtræk nedenfor foretaget til '$rod'.
Nedenfor er vist en række typiske strukturer og den kode der skal benyttes for at hente deres data:
Attributter fra rod
|
$rod = simplexml_load_file("http://www.nationalbanken.dk/_vti_bin/DN/DataService.svc/CurrencyRatesXML?lang=da");
echo $rod['type']. "<br />";
echo $rod['author']. "<br />";
echo $rod['refcur']. "<br />;
echo $rod['refamt']. "<br />";
|
Level 2 med attributter
|
$rod = implexml_load_file("http://www.nationalbanken.dk/_vti_bin/DN/DataService.svc/CurrencyRatesXML?lang=da");
foreach ($rod->dailyrates->currency as $curr) {
echo $curr->attributes()->code. "<br />";
echo $curr->attributes()->desc. "<br />";
echo $curr->attributes()->rate. "<br />";
}
|
Level 1 med tags
|
$rod = simplexml_load_file('http://www.hvemstemmerhvad.dk/api/api_politikere.php');
foreach($rod -> politiker as $polit){
echo $polit -> mp_id_hvh . "<br />";
echo $polit -> party_id_hvh . "<br />";
echo $polit -> link_hvh . "<br />";
echo $polit -> acronym_ft . "<br />";
echo $polit -> fulde_navn . "<br />";
echo $polit -> valgkreds_hvh . "<br />";
echo $polit -> email . "<br />";
echo $polit -> birthday . "<br />";
echo $polit -> active . "<br />";
echo $polit -> adresse . "<br />";
echo $polit -> homepage . "<br />";
echo $polit -> twitter . "<br />";
echo $polit -> position . "<br />";
echo $polit -> personal_votes . "<br />";
}
|
Tags fra rod
|
$rod = simplexml_load_file('https://www.quandl.com/api/v1/datasets/DOE/RBRTE.xml');
echo $rod -> id . "<br />";
echo $rod -> {'source-name'} . "<br />";
echo $rod -> {'source-code'} . "<br />";
echo $rod -> code . "<br />";
echo $rod -> name . "<br />";
echo $rod -> {'urlize-name'} . "<br />";
echo $rod -> {'display-url'} . "<br />";
echo $rod -> description . "<br />";
echo $rod -> {'updated-at'} . "<br />";
echo $rod -> frequency . "<br />";
echo $rod -> {'from-date'} . "<br />";
echo $rod -> {'to-date'} . "<br />";
|
|