對接阿里大魚(現阿里雲通訊)API 回傳 XML 回應,PHP 用 simplexml_load_string() 解析後得到 SimpleXMLElement Object,直接屬性存取需注意命名空間與巢狀結構。
SimpleXMLElement Object
(
[code] => 15
[msg] => Remote service error
[sub_code] => isv.MOBILE_NUMBER_ILLEGAL
[sub_msg] => 號碼格式錯誤
[request_id] => zqbnzcj7btxy
)
直接用物件屬性語法:
$result = $obj->sub_msg; // 結果:號碼格式錯誤
SimpleXMLElement Object
(
[result] => SimpleXMLElement Object
(
[err_code] => 0
[model] => 100863158072^1101308124312
[success] => true
)
[request_id] => 101yy013xxd
)
逐層存取:
$result = $obj->result->success; // 結果:true
$obj->{'attr-name'}。(string)$obj->sub_msg 或 (int)$obj->code。isset($obj->sub_code)。$obj->children('ns', true)->node。print_r 判斷結構:SimpleXMLElement 物件 print_r 輸出不全,建議用 var_dump 或轉 JSON:json_decode(json_encode($xml), true) 轉陣列再處理。$obj->success == 'true' 可能失敗,務必強制轉型 (string)$obj->success === 'true'。$obj->empty_node 回傳物件而非 null,需用 count($obj->empty_node) 判斷。