为什么下面的代码在PHP中找不到XML中的getElementsByTagName?

时间:2016-08-02 12:30:13

标签: php xml

我不明白为什么下面的代码没有给我这些名字的值。我已经困惑了几个小时但没有结果。任何帮助都会非常好......

代码是:

$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"); 

然后在我的日志文件中:

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";

为什么我的$ nodelist为空?

2 个答案:

答案 0 :(得分:3)

使用以下代码 -

$xml = <<< XML
<?xml version="1.0" encoding="utf-8"?>
<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>
XML;

$dom = new DOMDocument;
$dom->loadXML($xml);
$opleiding = $dom->getElementsByTagName('opleiding');
foreach ($opleiding as $ople) {
    echo $ople->nodeValue;
    echo "<br/>";
}

答案 1 :(得分:2)

案例问题:$nodelist$nodeList是不同的变量。改变

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

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

应该解决问题。