在php中解析xml时,循环运行了两次

在php中解析xml时,循环运行了两次,php,xml,dom,foreach,domdocument,Php,Xml,Dom,Foreach,Domdocument,我不太清楚为什么我的内环数据会被添加到外环数据中- 我正在解析的XML- 我正在使用的代码- <?php $dom = new DomDocument; $dom->preserveWhiteSpace = FALSE; $dom->load('course/Golf/imsmanifest.xml'); // get the resources element $organization = $dom->getElementsByTagName( "item" )

我不太清楚为什么我的内环数据会被添加到外环数据中-

我正在解析的XML-

我正在使用的代码-

<?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>';
getElementsByTagName(“项目”);
回声“
    ”; foreach($organizationItem形式的组织) { $unitTitle=$organizationItem->getElementsByTagName(“标题”); $unitName=$unitTitle->item(0)->nodeValue; 回显“
  • ”、$unitName“
  • ”; 回声“
      ”; $item1=$organizationItem->getElementsByTagName(“项目”); foreach($item1作为$myitem){ $title=$myitem->getElementsByTagName(“title”); $author=$title->item(0)->nodeValue; 回音“
    • ”,$author“
    • ”; } 回声“
    ”; } 回声“
”;
生成输出-

预期产出-


让我知道for each循环的错误所在。

因为
元素是嵌套的
$dom->getElementsByTagName(“item”)
获取所有
item
元素,包括位于另一
item
中的元素。那不是你想要的


我建议用于此类工作。

没有查看代码,但似乎只有下面没有列表的行不会被处理。您正在检查哪种浏览器?选择xPath的原因是什么?@swapnesh,因为xPath设计用于从XML文档中选择节点。它比DOM方法更强大、更灵活。