/var/log/masayoshi/masayoshi.life.log

とりあえず、書きたいこと書くだけ。

xpathで属性の値を指定する方法



PHPでやってたので



<?php
$hoge = simplexml_load_file("dash.xml") ;
print_r($hoge->xpath("/test/value[@name=\"odoru\"]")) ;
?>

dash.xml



<?xml version="1.0" encoding="UTF-8"?>
<test>
<value name="aibou">相棒 Season8</value>
<value name="odoru">踊る大捜査線 THE movie 3〜奴らを解放せよ〜</value>
<value name="lair">ライアーゲーム</value>
</test>



結果



Array (
[0] => SimpleXMLElement Object (
[@attributes] => Array (
[odoru] => odoru
)
[0] =>
踊る大捜査線 THE movie 3〜奴らを解放せよ〜
)
)


ポイントは



value[@name=\"odoru\"]



です、意味は「valueという要素であり、nameという属性の値が「odoru」に合致する」。


[@属性=値]は覚えておいて損はないね。


これを知らなかったらこういう風にやってるかもw



<?php
$hoge = simplexml_load_file("dash.xml") ;
foreach($hoge as $dat){
if($dat["name"] == "odoru"){
print_r($dat) ;
break ;
}
}
?>

でも同じようなことはできるけど



  • 重い

  • 時間がかかる


という短所があります、とりあえずこれくらいかなw


追記:取得したデータはUTF-8のため文字化けする可能性あります