首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

PHP 處理 WebService 返回 XML 包裹的 JSON 數據完整流程

     編輯:程式設計綜合問答

數據格式

<string xmlns="">{"status":"1","Msg":"登陸成功"}</string>

WebService 返回 XML,XML 文本節點內容是 JSON 字符串。

處理步驟

  1. file_get_contents 獲取原始 XML 字符串。
  2. 用 DOMDocument 解析 XML,提取 <string> 節點文本。
  3. json_decode 將提取的 JSON 字符串轉為 PHP 對象/數組。
  4. 訪問具體字段。

完整代碼

$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";
}

常見坑點

  • 命名空間:若 XML 有命名空間,需用 getElementsByTagNameNS 或註冊前綴。
  • 編碼:確保 file_get_contents 獲取的是 UTF-8,否則 json_decode 會失敗。可用 mb_convert_encoding 轉碼。
  • 錯誤處理:生產環境務必捕獲 DOMDocument::loadXML 和 json_decode 的異常/錯誤碼。

替代方案:SimpleXML

$xml = simplexml_load_string($xmlString);
$jsonString = (string)$xml; // 直接獲取文本節點
$data = json_decode($jsonString, true);

SimpleXML 代碼更簡潔,但對複雜 XML 命名空間支持較弱。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved