XPATHってパスですよね。パスにヒットするノードを配列で取り出すみたいな
あるテキストを含むノードを取り出す。
検索データを含むXMLノードを探して、取り出すには、PHPの場合はこんな感じ
<?php $simple_xml->xpath("/data/row/name/id[text()='{$categoryID}']/parent::*");
パスだけだとノード取れすぎ。
"/data/row/name"
で取り出すと、大量に取れちゃう。name 中の id = 1 のノードだけに絞り込んで取りたい。
取得した name 数万件のリストを for ループで廻して・・・探して取り出す。とか悪夢。
<name><id>1</id></name>
id テキストに1のモノだけ取り出したい。/name/id だと取れ過ぎちゃうし,/name/id/text()=1 だと id が取れちゃう。 id = 1の name ノードが欲しい。
"/data/row/name/id[text()='1']"
コレだと、 id ノードが返って来ちゃう。
parent キーワードを使うことにした。
"/data/row/name/id[text()='1']/parent::*"
これで id = 1 のノードの親ノードが返ってくるので一発で取れる。