XML opbouw:

<?xml version="1.0" encoding="UTF-8"?>
<feed>
<data>
<record>
<column name="url">
<![CDATA[http://eenurl.nl]]>;
</column>
column name="title">
<![CDATA[hier dan de titel]]>
</column>
column name="description">
<![CDATA[eenbeetje tekst.]]>
</column>

<column name="image">
<![CDATA[http://....]]>;
</column>
<column name="price">
<![CDATA[50]]>
</column>
<column name="category">
<![CDATA[nederland]]>
</column>
</record>
<record>
<column name="url">
<![CDATA[http://2eenurl.nl]]>;
</column>
column name="title">
<![CDATA[2hier dan de titel]]>
</column>
column name="description">
<![CDATA[2eenbeetje tekst.]]>
</column>
<column name="image">
<![CDATA[2http://....]]>
</column>
<column name="category">
<![CDATA[nederland]]>
</column>
</record>
</data>
</feed>


En dan nu het uitlezen..
<?php
$xml = simplexml_load_file('http://www.eendomein.nl/bestandvande.xml';);
foreach ($xml->data->record as $product_main) {
foreach ($product_main->column->attributes()->name as $product) {
$feed['beschrijving'] = mysql_real_escape_string($product->description);
}
echo $feed['beschrijving'];
unset($feed) ;
}
?>

Maar dit werkt niet niet.. het gaat fout bij 'attributes()' weet iemand hoe dit wel werkt met 'attributes'?
Ik hoor het graag.
Laten we eerst je code eens grondig bekijken. Je wilt elk <column> element loopen en daar de name attribute van lezen. Wat je dus doet is foreach op die column en dan de attribuut opvragen. Wat jij nu doet is foreach over een attribuut, dat kan sowieso al niet.

Ten tweede lezen we op php.net dat de return value een "SimpleXMLElement object that can be iterated over to loop through the attributes on the tag" is. Interated betekend loopen met een loop.
Wil jij over alle attributen lopen van een specifiek element? Nee, jij wilt een specifiek attribute (name) opvragen.

Hoe moet dat dan? Nou, we scrollen iets naar beneden naar de eerste reactie en daar zien we het voorbeeld: $sxml->Table[0]['Foo'] Haalt het Foo attribuut van het eerste Table element op.
Hmm.. beetje verkeerd opgepakt dus. Ik zal er weer eens goed naar kijken.

Reageren