Justme Justme - 4 months ago 8
PHP Question

Not finding getElementsByTagName in XML in PHP

I'm do not understand why the below code is giving me not the values of the names. I'm already puzzling for a few hours but with no result. Any help will be very nice...

The code is:

$xml = new DOMDocument('1.0', 'UTF-8');
$xml->LoadXml("
<node>
<cv>
<opleiding>
<naam>MicrosoftOpleiding bij bill - Microsoft</naam>
<periode>2016</periode>
</opleiding>
<opleiding>
<naam>Post Universitair Centrum (Belgie) - Master of Business Administration (Informatie, Technologie, Logistiek en Marketing)</naam>
<periode>1987 - 1995</periode>
</opleiding>
<opleiding>
<naam>Vrije Universiteit - Bedrijfskunde</naam>
<periode>1987 - 1992</periode>
</opleiding>
<opleiding>
<naam>Opleidingsinstantie - Studie HBO</naam>
<periode>2006 - 2016</periode>
</opleiding>
</cv>
</node>
");
writetolog ("Dump of XML: ". $xml->savexml());
$nodelist = $xml->getElementsByTagName('opleiding');
foreach ($nodeList as $node) {
$naam = $node->getElementsByTagName('naam');
$naamID = $naam->item(0)->nodeValue;
writetolog ("The name in de opleiding is " . $naamID);
}
writetolog ("After the loop");


Then in my log file is:

14:26:48 Start run
14:26:48 s:644:"Dump of XML: <?xml version="1.0"?>
<node>
<cv>
<opleiding>
<naam>MicrosoftOpleiding bij bill - Microsoft</naam>
<periode>2016</periode>
</opleiding>
<opleiding>
<naam>Post Universitair Centrum (Belgie) - Master of Business Administration (Informatie, Technologie, Logistiek en Marketing)</naam>
<periode>1987 - 1995</periode>
</opleiding>
<opleiding>
<naam>Vrije Universiteit - Bedrijfskunde</naam>
<periode>1987 - 1992</periode>
</opleiding>
<opleiding>
<naam>Opleidingsinstantie - Studie HBO</naam>
<periode>2006 - 2016</periode>
</opleiding>
</cv>
</node>
";
14:26:48 s:14:"After the loop";


Why is my $nodelist empty?

Answer

Case matters: $nodelist and $nodeList are different variables. Changing

$nodelist = $xml->getElementsByTagName('opleiding');

to

$nodeList = $xml->getElementsByTagName('opleiding');

should solve the problem.