2012-04-27 9 views
0

マイPHP:PHP XML質問

$url = '../build.xml'; 
$xml = simplexml_load_file($url); 

foreach($xml->css as $css) { 
    echo (string) $css->element['id']."{"; 
    foreach($xml->css->element->csstag as $tag) { 
     $temp = $tag->title.": ".$tag->value.";"; 
     echo $temp; 
    } 
    echo "}"; 
} 

マイXML:

<root> 
    <css> 
    <element id="body"> 
     <csstag><title>background-color</title><value>#FFF</value></csstag> 
     <csstag><title>color</title><value>#333</value></csstag> 
     <csstag><title>font-family</title><value>Verdana, Geneva, sans-serif</value></csstag> 
    </element> 
    <element id="#header"> 
     <csstag><title>background-color</title><value>#444</value></csstag> 
     <csstag><title>color</title><value>#FFF</value></csstag> 
     <csstag><title>border-bottom</title><value>#333 5px solid</value></csstag> 
    </element> 
    <element id="#footer"> 
     <csstag><title>background-color</title><value>#444</value></csstag> 
     <csstag><title>color</title><value>#FFF</value></csstag> 
     <csstag><title>border-top</title><value>#333 5px solid</value></csstag> 
    </element> 
    </css> 
</root> 

私が間違っているものを見つけることができません!

最初の問題は、最初の<element>ノードが表示されていることです。これはそれぞれの<css>タグをforeachするように言いましたが、それ以外の方法は考えられませんでした<element>ノード。

2番目のことは、2番目のforeachが何も戻ってきていないことです!

誰でもコードの問題を見ることができますか?前もって感謝します!あなたは、foreachループを逃している

答えて

1

は、あなたは別のレベルを必要とする

foreach($xml->css as $css) { 
    foreach($xml->css->element as $elem){ // foreach element 
     echo (string) $elem['id']."{"; // id for each element 
     foreach($elem->csstag as $tag) { 
      $temp = $tag->title.": ".$tag->value.";"; 
      echo $temp; 
    } 
    echo "}\n"; //\n to make the css look neater 
    } 
}