• 締切済み

名前空間のあるXMLからの取り出し

お世話になります。 <?xml version="1.0" encoding="UTF-8" ?> <Response> <header:Header xmlns:header="http://aa.com"> </header:Header> <Body> <itemCodeSearch:ItemCodeSearch xmlns:itemCodeSearch="http://bb.com"> <Item> <itemName>@@@@</itemName> </Item> </itemCodeSearch:ItemCodeSearch> </Body> </Response> から、@@@@の部分を抜き出し取得したいのですが、ご存知の方いらっしゃいませんでしょうか? simplexml_load_string()で抜き出すときには、: があるとうまくいかないということですが・・ 全体が$xmlにはいっているとして、 $xml->Body->itemCodeSearch->Item->itemName; とし、うまくいっていたのですが、名前空間がどうのというエラーが発生したりします。 ご存知の方ご教授ください。 宜しくお願いします。

みんなの回答

回答No.1

========xxx.xml(名前空間URIを支障ないものに変更========== <?xml version="1.0" encoding="UTF-8" ?> <Response> <header:Header xmlns:header="http://www.example.com"> </header:Header> <Body> <itemCodeSearch:ItemCodeSearch xmlns:itemCodeSearch="http://www2.example.com"> <Item> <itemName>@@@@</itemName> </Item> </itemCodeSearch:ItemCodeSearch> </Body> </Response> =============xxx.php050302(俺の環境では5.3.2で実行しているのを示すように設定してある)============ <?php $str = file_get_contents("xxx.xml"); $xml = simplexml_load_string($str); print_r((string)($xml->Body->children("http://www2.example.com",false)->ItemCodeSearch->children("",true)->Item->itemName)); ?> ================ マニュアルの内容が変だったのでバグ報告した。 http://bugs.php.net/bug.php?id=51585

mykhry
質問者

お礼

お忙しい中ご回答頂きまして誠にありがとうございます。 $adr = 'URL'; $tmp = file_get_contents($adr); $xml = simplexml_load_string($tmp); print_r((string)($xml->Body->children("http://api.rakuten.co.jp/rws/rest/ ItemCodeSearch/2007-04-11",false)-> itemcodesearch->children("",true)->item->itemname)); としてみましたが、やはりうまく取得できませんでした。 コロンがはいっているとうまく取得できないみたいです。http://www.csfactory.jp/blog/2008/03/06/%E6%A5%BD%E5%A4%A9-api-%E3%81%A8-simplexml_load_file/ その後のitemName等の要素のアクセスがよくわかりません。 こちらのpearライブラリを利用するとできたのですが、XMLから取得するやり方が気になっています。

関連するQ&A