XPathでテキストノードの検索
最近XPathを書いてなかったので、だいぶ忘れてた・・・
属性で検索する方法はネットで簡単にみつかるけど、テキストノードで検索する方法はなかなかありませんでした。
私がXML設計するとほとんどテキストノードで構成しちゃうんで、属性あんまりつかわないんですよ。
ということで、まずXMLのサンプルです。
ここで、keyが"abc"となっているitemのvalueの値を求めること考えます。
XPathは以下の通り
ついでにPHPで動かすと以下のようになります。
属性で検索する方法はネットで簡単にみつかるけど、テキストノードで検索する方法はなかなかありませんでした。
私がXML設計するとほとんどテキストノードで構成しちゃうんで、属性あんまりつかわないんですよ。
ということで、まずXMLのサンプルです。
<items>
<item>
<key>abc</key>
<value>123</value>
</item>
<item>
<key>efg</key>
<value>456</value>
</item>
</items>
ここで、keyが"abc"となっているitemのvalueの値を求めること考えます。
XPathは以下の通り
/items/item/key[.='abc']/../value
ついでにPHPで動かすと以下のようになります。
<?php
$str = <<<EOS
<items>
<item>
<key>abc</key>
<value>123</value>
</item>
<item>
<key>efg</key>
<value>456</value>
</item>
</items>
EOS;
$xml = simplexml_load_string($str);
$xpath = "/items/item/key[.='abc']/../value";
$result = (string)$xml->xpath($xpath);
echo $result;
スポンサーサイト