xml tag met en zonder namespace combineren
O.b.v. een xml structuur die ik heb aangeleverd gekregen van de overheid wil ik gegevens van mijn site kunnen doorsturen. Aan deze xml structuur kan ik niets wijzigen en deze bevat tag met en zonder namespaces. Ik ben aan het experimenteren met xml. Xml zonder namespaces krijg ik verwerkt binnen php. Ook xml met enkel namespaces lukt. Wil ik een xml structuur gebruiken waarin tags worden gecombineerd met en zonder namespaces dan verschijnt er niets, een gedeelte of verkeerde info op mijn scherm. Foutmeldingen krijg ik niet, alleen als ik de voornaam ($Vnaamdata) wil echoën. Kan iemand mij vertellen wat ik verkeerd doe ?
Dit is mijn code.
Dit is mijn code.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
$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 $tagdata->a.$aanhefdata->a;
foreach($tagdata->kennis 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/>';
}
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 $tagdata->a.$aanhefdata->a;
foreach($tagdata->kennis 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/>';
}
Gewijzigd op 18/01/2014 20:22:22 door Bas van de Ven
wat geeft print_r($sxe); ?
Dit resultaat :
SimpleXMLElement Object ( [kennis] => Array ( [0] => SimpleXMLElement Object ( ) [1] => SimpleXMLElement Object ( ) [2] => SimpleXMLElement Object ( ) ) )
SimpleXMLElement Object ( [kennis] => Array ( [0] => SimpleXMLElement Object ( ) [1] => SimpleXMLElement Object ( ) [2] => SimpleXMLElement Object ( ) ) )




