2010-03-26 46 views
0

只显示必要的信息,我有XML表:如何从XML

<?xml version="1.0" encoding="UTF-8"?> 
<table> 
    <user> 
    <id>1</id> 
    <info> 
    <more> 
     <nick>John</nick> 
     <adress>blabla</adress> 
    </more> 
    <more> 
     <nick>Mike</nick> 
     <adress>blablabla</adress> 
     <tel>blablabla</tel> 
    </more> 
    </info> 
    </user> 
    <user> 
    <id>2</id> 
    <info> 
    <more> 
     <nick>Fake</nick> 
     <adress>blablabla</adress> 
     <tel>blablabla</tel> 
    </more> 
    </info> 
    </user> 
</table> 

,我需要从中读取数据。我做了这样的解析器。

<?php 
$xml = simplexml_load_file("test.xml"); 

echo $xml->getName() . "<br /><br />"; 
echo '<hr />'; 

foreach ($xml->children() as $child1){ 
    //echo $child1->getName() . ": " . $child1 . "<br />"; //el 
    foreach($child1->children() as $child2){ 

    if ((string)$child2 == '2') { 
      echo "<strong>" .$child2 . "</strong><br />"; 

      foreach($child2->children() as $child3){ 
      echo "<strong>".$child3->getName()."</strong>:" . $child3 . "<br />"; 
       foreach($child3->children() as $child4){ 
        echo $child4->getName() . ": " . $child4 . "<br />"; 
       } 
      } 
    } 
    } 

echo '<hr />'; 
echo '<br />'; 
} 
?> 

我想在XML文件搜索,例如获取有关ID 2用户的所有信息,我尝试用if函数来实现它,但我得到的只有编号。 什么是错的?有什么建议么??

回答

0

您可能想使用XPath,因为我无法解析这个martrix。 XSLT可能是更好的方式来处理这个问题,从它看起来像你正在做的事情。