0

私のPHP:

$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>

何が悪いのかわかりません!

最初の問題は、最初の foreach が最初の<element>ノードだけを表示していることです。これは、各タグを foreach するように指示したためだとわかっていますが、ノード<css>の属性をエコーする他の方法は考えられませんでした。<element>

2 つ目は、2 番目の foreach が何もエコーバックしていないことです。

誰でもコードの問題を見ることができますか? 前もって感謝します!

4

1 に答える 1

1

foreach ループがありません。別のレベルが必要です

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
    }
}
于 2012-04-27T08:23:44.213 に答える