In deze topic probeer ik nogmaals mijn probleem opgelost te krijgen.
Ik wil een aangeleverde xml-structuur integreren binnen php. Aan de structuur van de xml ben ik gebonden en kan dus niets wijzigen. De structuur bevat tags met en zonder namespaces en ziet er vergelijkbaar uit als onderstaande code waarmee ik aan het testen ben. Afzonderlijk gebruik van tags zonder namespaces of enkel tag met namesspaces krijg ik werkend binnen php. Het combineren van deze twee tags lukt me niet.
In onderstaande code wordt de loop foreach($tagdata->persoon as $persoon) niet gestart. Dit blijkt uit de sourch code. Het script stopt net als de loop zou moeten worden gestart. Geen enkel echo wordt getoond binnen de loop foreach($tagdata->persoon as $persoon).
Kan iemand mij uitleggen wat er niet goed is aan de code ? Ik heb werkelijk al van alles geprobeerd.
Nergens op internet krijg ik iets gevonden ook php programmeurs die ik heb gesproken houden de bood af. Wil ik dan iets wat niet kan of zo ?
<code>
<?php
$xml = '<voorbeeld xmlns:kennis="link"
xmlns:tagg="verbinding"
xmlns:aanhef="doorgang"
xmlns:voornaam="verwijzing"
xmlns:achternaam="brug"
xmlns:hobby="my.foo.urn">
<kennis>
<tagg:a>
<aanhef:a>Mevr </aanhef:a>
<persoon>
<voornaam:a>Caro</voornaam:a>
<achternaam:a>Emerald gaat</achternaam:a>
<hobby:a> graag zingen </hobby:a>
</persoon>
</tagg:a>
</kennis>
<kennis>
<tagg:b>
<aanhef:b>Dhr </aanhef:b>
<persoon>
<voornaam:b>Bas</voornaam:b>
<achternaam:b>van de Ven</achternaam:b>
<hobby:b> drummen </hobby:b>
</persoon>
</tagg:b>
</kennis>
<kennis>
<tagg:c>
<aanhef:c>Jongeman </aanhef:c>
<persoon>
<voornaam:c>Ruben</voornaam:c>
<achternaam:c>Verhoeven</achternaam:c>
<hobby:c> voetballen </hobby:c>
</persoon>
</tagg:c>
</kennis>
</voorbeeld>' ;
$sxe = new SimplexmlElement($xml) ;
foreach($sxe->kennis as $kennis) {
$tagdata = $kennis->children('verbinding'); // EXTRA TAG
$aanhefdata = $tagdata->children('doorgang');//AANHEF
echo "De aanhef is : ".$tagdata->a.$aanhefdata->a;
echo $tagdata->b.$aanhefdata->b;
echo $tagdata->c.$aanhefdata->c;
foreach($tagdata->persoon as $persoon) {
$Vnaamdata = $persoon->children('verwijzing'); //VOORNAAM
$Anaamdata = $persoon->children('brug');// ACHTERNAAM
$hobbydata = $persoon->children('my.foo.urn');//HOBBY
echo $tagdata->a.$aanhefdata->a.$Vnaamdata->a.$Anaamdata->a.$hobbydata->a;
echo $tagdata->b.$aanhefdata->b.$Vnaamdata->b.$Anaamdata->b.$hobbydata->b;
}
/*echo $tagdata->b.$aanhefdata->b.$Anaamdata->b.$hobbydata->b;
echo $tagdata->c.$aanhefdata->c.$Anaamdata->c.$hobbydata->c;*/
echo '<br/>';
}
echo "<br>";
?>
</code>
1.947 views