2012-03-14 14 views
2

私はその属性の1つで参照しているノードの値を解析しようとしています。私はminwageに等しいfull_imageどこポスターIDのURL値を取得したい場所simpleXML属性に基づいてノードを取得します

<data> 

    <poster name="E-Verify" id="everify"> 

    <full_image url="e-verify-swa-poster.jpg"/> 

    <full_other url=""/> 

    </poster> 


    <poster name="Minimum Wage" id="minwage"> 

    <full_image url="minwage.jpg"/> 

    <full_other url="spa_minwage.jpg"/> 

    </poster> 
</data> 

ここにある:

$xml = simplexml_load_file('PosterData.xml'); 
$main_url = $xml->full_image[name] where poster[id] = "minwage"; 
//something like that. 
echo $main_url; 

Result: minwage.jpg 

誰もが持っている場合、私は

XML構文を確認していませんこのようなことをカバーするリソースはすべて共有してください。あなたがそれら(そしておそらく出力して)比較したいので、

+0

あなたはそうあり、資源を求めたよう:(http://stackoverflow.com/questions/3448005/implementing-condition-in-xpath)[XPathの状態を実装する]と[SimpleXMLをGET要素の内容に基づきます属性値](http://stackoverflow.com/q/4736417/367456) – hakre

答えて

5

単にループポスターの要素が文字列として、文字列に属性値をキャストすることを忘れないでくださいと:

$xml = simplexml_load_file('PosterData.xml'); 

foreach ($xml->poster as $poster) { 
    if ((string) $poster['id'] == 'minwage') { 
     echo (string) $poster->full_image['url']; 
    } 
} 
+0

それは魅力的なように働いた。私はそのプロセスを考えることを諦めました。 +1 – Denoteone

1

は、あなたが使用することができます。

$object = simplexml_load_string('<data><poster name="E-Verify" id="everify"><full_image url="e-verify-swa-poster.jpg"/><full_other url=""/></poster><poster name="Minimum Wage" id="minwage"><full_image url="minwage.jpg"/><full_other url="spa_minwage.jpg"/></poster></data>'); 

foreach ($object as $value) { 
    echo "URL: ".$value->full_image->attributes(); 
    echo "<br>"; 
} 

外部ファイルを呼び出す場合は、simplexml_load_file('Some external file.xml')を使用してください。

19

xpath queryを単純なXML文書で実行するには、SimpleXMLElement::xpath()を使用することができます。

$xml = simplexml_load_file('PosterData.xml'); 
$main_url = $xml->xpath('name[@id="minwage"]/full_image')[0]; 

echo $main_url; 
+0

これは私が元々試みた方法です。情報をありがとう。 – Denoteone

+1

これは単なるループ処理よりもはるかにエレガントであり、例外的な答えでなければなりません。 – Select0r

+0

私はlocalhostでコードを複製してこのコードを動作させようとしていますが、 "Undefined Offset:0"が表示されます。 https://stackoverflow.com/questions/48154956/xpath-query-on -simplexml-document-undefined-offset-0 – buck1112

関連する問題