- ベストアンサー
php5のxpathで結果を連想配列で得るには?
- こんにちは。xpathの結果を連想配列で取得したいのですが、どうすればよいのかわかりません。
- 指定したidの中に存在する子エレメント全てを取得する方法を知りたいです。
- <aaa>タグの中の子エレメントの値を$keyに連想配列のキーとして取得したいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1ですが、simpleXML を使ってということですよね。 xpath の結果でエレメント名を取り出す関数ってなかったように思います。 asXml() で<hoge>value</hoge>が取り出せることを考えると、$xml へのリンクを持っているのは確かだと思いますが・ SimpleXMLにこだわるなら、asXml() を使って、 <?php $xml=simplexml_load_file("data.xml"); $result=$xml->xpath("/aaa/bbb_id[@id='one']/*"); foreach($result as $element){ $wkxml=simplexml_load_string("<root>".$element->asXml()."</root>"); list($key)=array_keys((array)$wkxml);#hoge $array["$key"]=$element; } ?> のように書くことは可能だと思います。
その他の回答 (1)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
こんなふうにすればいいかと思います。 <?php $dom = new DOMDocument; $dom->load("data.xml"); $xpath = new DOMXPath($dom); $nodeSet = $xpath->query("/aaa/bbb_id[@id='one']/*"); foreach($nodeSet as $node) { $array["$node->tagName"]=$node->nodeValue; } ?> ただ、ノード名で連想配列にした場合、同じ名前があれば、上書されてしまうと思いますが・・?