0

内部ループ データが外部ループ データに追加される理由がよくわかりません。

解析中の XML - http://pastebin.com/vGc5NhXr

私が使用しているコード -

<?php

$dom = new DomDocument;

$dom->preserveWhiteSpace = FALSE;
$dom->load('course/Golf/imsmanifest.xml');

// get the resources element
$organization = $dom->getElementsByTagName( "item" );

  echo '<ul>';
  foreach( $organization as $organizationItem )
  {

  $unitTitle = $organizationItem->getElementsByTagName("title");
  $unitName = $unitTitle->item(0)->nodeValue;
  echo '<li>',$unitName,'</li>';
  echo '<ul>';
  $item1 = $organizationItem->getElementsByTagName( "item" );
    foreach( $item1 as $myitem ) {
    $title = $myitem->getElementsByTagName("title");
    $author = $title->item(0)->nodeValue;
    echo '<li>',$author,'</li>';
    }
  echo '</ul>';  
  }
  echo '</ul>';

生成された出力 - http://codepad.org/J2vP71rd

予想される出力 - http://codepad.org/uzUtehgT

for each ループで何が間違っているのか教えてください。

4

1 に答える 1

1

item要素がネストされているためです。別の 内にあるものを含め、$dom->getElementsByTagName( "item" )すべての要素を取得します。それはあなたが望むものではありません。itemitem

この種の仕事にはXPathを使用することをお勧めします。

于 2013-09-22T07:58:46.460 に答える