1

xmlデータは次のようになります。

<feed>    
    <entry>
        <abc:rank scheme="http://foo.bar">45</abc:rank>
        <abc:rank scheme="http://foo2.bar">88</abc:rank>
    </entry>
    <entry>
        <abc:rank scheme="http://foo.bar">125</abc:rank>
        <abc:rank scheme="http://foo2.bar">32</abc:rank>
    </entry>
</feed>

これらのエントリをすべて次のコードで出力できます。

foreach($xml->entry[$i]->children('abc', true) as $a) {
    echo $a;
}

ただし、最初のエントリに「88」という内容のコンテンツを取得したい場合は、次のようになります。

foreach($xml->entry[$i]->children('abc', true) as $a) {
    if($a["scheme"] == "http://foo2.bar")
        echo $a;
}

動作しません。

属性に応じてこれらの子を選択するにはどうすればよいですか?

4

1 に答える 1

1

わかりました、もうわかりました。正しい解決策に興味がある人のために:

    $namespaces = $xml->entry[$i]->getNameSpaces('true');
    $abc= $xml->entry[$i]->children($namespaces['abc']);
    foreach($abc->rank as $a) {
        $scheme = $a->attributes();
        echo $scheme['scheme'];
        echo " - ";
    }
于 2012-11-21T15:16:41.860 に答える