教えて!gooにおける不適切な投稿への対応について

$xml要素を階層指定して取得しようとすると、NULLになるのですが…。

▽元のXMLファイル(楽天トラベルAPI)
<Response>
_<Body>
__<KeywordHotelSearch:KeywordHotelSearch>
___<hotel>
____<hotelBasicInfo>
_____<hotelNo>7531</hotelNo>
_____<hotelName>パークハイアットホテル</hotelName>

▽$xml = simplexml_load_string($xml);した際の、var_dump($xml)
object(SimpleXMLElement)#1 (2) { ["headerHeader"]=> object(SimpleXMLElement)#2 (3) { ["Args"]=> object(SimpleXMLElement)#4 (1) { ["Arg"]=> array(7) { [0]=> string(4) "true" [1]=> string(4) "true" [2]=> string(4) "true" [3]=> string(4) "true" [4]=> string(4) "true" [5]=> string(4) "true" [6]=> string(4) "true" } } ["Status"]=> string(7) "Success" ["StatusMsg"]=> object(SimpleXMLElement)#5 (0) { } } ["Body"]=> object(SimpleXMLElement)#3 (0) { } } object(SimpleXMLElement)#8 (0) { }

この後、$items = $xml->Body->KeywordHotelSearchKeywordHotelSearch->hotel->hotelBasicInfo;
とやると、$itemsが NULL になるのですが、何故でしょうか?
(※KeywordHotelSearch:の:は、simplexml_load_stringする前に、str_replaceで処理済です)

ちなみに、$items = $xml->Body->KeywordHotelSearchKeywordHotelSearch;では、$itemsは下記になります。
object(SimpleXMLElement)#4 (0) { }

gooドクター

A 回答 (3件)

ちゃんと取得できてないんじゃないの?

    • good
    • 0

正規表現はきっと誰かが書いてくれる。

書く気はないので悪しからず。
XML で書こうにも、名前空間が指定されていないからどうしようもない。
ゴミの中から針を探すようなものだ。

XML に似せたゴミでしかないものを XML として扱うわけにはいかなので、正規表現なり何なりでやるしかない。
    • good
    • 0

simplexml は名前空間ごとに連想配列を作る。




・・・
> (※KeywordHotelSearch:の:は、simplexml_load_stringする前に、str_replaceで処理済です)
・・・(爆笑)
正規表現でもつかったら

この回答への補足

>正規表現でもつかったら
正規表現では、どのように処理するのでしょうか?

補足日時:2010/09/21 09:24
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

gooドクター

人気Q&Aランキング