<string xmlns="">{"status":"1","Msg":"登陸成功"}</string>
WebService 返回 XML,XML 文本節點內容是 JSON 字符串。
file_get_contents 獲取原始 XML 字符串。DOMDocument 解析 XML,提取 <string> 節點文本。json_decode 將提取的 JSON 字符串轉為 PHP 對象/數組。$url = 'https://example.com/webservice?params...';
$xmlString = file_get_contents($url);
$dom = new DOMDocument();
$dom->loadXML($xmlString);
$jsonString = $dom->getElementsByTagName('string')->item(0)->nodeValue;
$data = json_decode($jsonString, true); // true 返回關聯數組
if ($data === null) {
throw new Exception('JSON 解析失敗: ' . json_last_error_msg());
}
$status = $data['status']; // "1"
$msg = $data['Msg']; // "登陸成功"
// 業務判斷
if ($status === '1') {
echo "登陸成功";
} else {
echo "失敗: $msg";
}
getElementsByTagNameNS 或註冊前綴。file_get_contents 獲取的是 UTF-8,否則 json_decode 會失敗。可用 mb_convert_encoding 轉碼。DOMDocument::loadXML 和 json_decode 的異常/錯誤碼。$xml = simplexml_load_string($xmlString);
$jsonString = (string)$xml; // 直接獲取文本節點
$data = json_decode($jsonString, true);
SimpleXML 代碼更簡潔,但對複雜 XML 命名空間支持較弱。