• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:php5のxpathで結果を連想配列で得るには?)

php5のxpathで結果を連想配列で得るには?

このQ&Aのポイント
  • こんにちは。xpathの結果を連想配列で取得したいのですが、どうすればよいのかわかりません。
  • 指定したidの中に存在する子エレメント全てを取得する方法を知りたいです。
  • <aaa>タグの中の子エレメントの値を$keyに連想配列のキーとして取得したいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.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)
回答No.1

こんなふうにすればいいかと思います。 <?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; } ?> ただ、ノード名で連想配列にした場合、同じ名前があれば、上書されてしまうと思いますが・・?