Justme Justme - 12 days ago 6
PHP Question

Why does below code not find 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.

Comments