• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ヘッダーが付いた場合の、simplexml_load_fileでの取り出し方)

simplexml_load_fileでヘッダー付きのXMLを取り出す方法

このQ&Aのポイント
  • simplexml_load_file()を使用してヘッダーが付いているXML文書から要素を取り出す方法を教えてください。
  • 要素の取り出しには特にヘッダーが付いている場合でも、echo $Xml->Response->Body->itemSearch->count; のように使用することができます。
  • 初めてヘッダーが付いているXMLを扱う場合でも、上記の方法を使用すれば要素を取得できます。

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

  • ベストアンサー
回答No.1

================Q3494329-1.xml============= <?xml version="1.0" encoding="UTF-8" ?> <Response> <header:Header xmlns:header="http://test.com/"> </header:Header> <Body> <itemSearch:ItemSearch xmlns:itemSearch="http://test.com/"> <count>2000</count> <page>1</page> </itemSearch:ItemSearch> </Body> </Response> ================= #!C:/Environment/PHP/v5.2.4/php-cgi.exe <?php //メモ //以下、言っていること全て同じ。childrenメソッドを使う //http://search.net-newbie.com/php/function.simplexml-load-file.html //http://search.net-newbie.com/php/ref.libxml.html#libxml.constants //http://www.doyouphp.jp/php5/php5_simplexml.shtml //名前空間の処理 //http://www.ibm.com/developerworks/jp/xml/library/x-simplexml.html //等を参考にした。 header("Content-Type:text/plain;charset=UTF-8"); //LIBXML_NOWARNINGを指定しないと色々言われてしまった。 $root = simplexml_load_file('./Q3494329-1.xml','SimpleXMLElement',LIBXML_NOWARNING); //名前空間接頭辞を使ってみましたが,以下でもOKです。count要素は「名前空間なし」なのでいったん戻す必要がある //print $root->Body->children('http://test.com/',false)->ItemSearch-> children("")->count; print $root->Body->children('itemSearch',true)->ItemSearch->children("")->count; //>ヘッダーが付いている。 //多分Header要素のことでなく //header:の部分だと思うんだけど,「ヘッダー」といわず //「名前空間接頭辞」ときちんと言おう。せめて「header」と書いてほしかった ?>

sunnylife
質問者

お礼

勉強不足で意味が解りませんが、 いただいた構文を貼り付けましたら 取得できました! ありがとうございます!