php用DOM解剖xml取值
透過API對接第三方服務時,有時會遇到對方回傳是XML的資料格式,在PHP上可採用SimpleXML或DOM來進行解剖並取出節點資料。有關SimpleXML解析請閱讀「讓PHP順利解剖XML取出節點資料」
當XML資料採用XML Namespace (xmlns)時,通常SimplyXML解剖時會出現錯誤,這時建議用DOM來處理。
處理示範
●◎ ~將XML資料存在變數上
- $xml="<?xml version='1.0' encoding='utf-8'?>
- <soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
- <soap:Body>
- <IsAuthenticateResponse xmlns='https://services.test.net'>
- <IsAuthenticateResult>
- <GUID>12345678</GUID>
- <ErrorCode>0</ErrorCode>
- <IPAddress>127.0.0.1</IPAddress>
- <IsExtend>true</IsExtend>
- <IsSucceed>false</IsSucceed>
- </IsAuthenticateResult>
- </IsAuthenticateResponse>
- </soap:Body>
- </soap:Envelope>";
- $doc=new DOMDocument();
- $doc->loadXML($xml);
- $doc->getElementsByTagName(節點名稱)->item(0)->nodeValue;
●◎ ~顯示節點資料範例
- 顯示IsSucceed結果
- echo $doc->getElementsByTagName("IsSucceed")->item(0)->nodeValue;
顯示:false