如何使用PHP从XML文件中读取所有节点?不仅仅是特定的节点

时间:2011-08-03 12:32:58

标签: php xml

这是我的xml文件:

<ROOT>
  <WEB>
    <thumb>images/thumbs/thumb.jpg</thumb>
    <TITEL>Website</TITEL>
  </WEB>
  <FLYER>
    <thumb>images/thumbs/thumb.jpg</thumb>
    <TITEL>Flyer</TITEL>
  </FLYER>
  <CD>
    <thumb>images/thumbs/thumb.jpg</thumb>
    <TITEL>cd</TITEL>
  </CD>
</ROOT>

在我的PHP文件中,我想从该xml文件中读出来。

<?php
$q=$_GET["q"];

$xmlDoc = new DOMDocument();
$xmlDoc->load("references.xml");

if ($q=="ALL"){
    $root = $xmlDoc->documentElement;
    $products = $root->childNodes;
} else {
    $products=$xmlDoc->getElementsByTagName($q);
}

foreach( $products as $product ){
    $titles = $product->getElementsByTagName( "TITEL" );
    $title = $titles->item(0)->nodeValue;

    $thumbs = $product->getElementsByTagName( "thumb" );
    $thumb = $thumbs->item(0)->nodeValue;

    echo '<div style="float:left; margin:0 3px;">';
    echo "<img src='".$thumb."' /><br />";
    echo "<p style='text-align: center;'><b>".$title."</b></p></div>";
}
?>

PHP代码应检查输入是否为“ALL”,然后打印出所有内容。如果输入是“WEB”,“FLYER”或“CD”,那么它只打印出这些项目,这样做很好。 但是对于所有节点,它打印不正确。有很多div标签,里面没有任何东西。 有谁知道为什么以及如何解决它?

感谢

1 个答案:

答案 0 :(得分:0)

你在哪里

$root = $xmlDoc->documentElement;
$products = $root->childNodes;

如果你把

$products = $xmlDoc->getElementsByTagName("ROOT");

有效吗?