如何讓PHP順利解剖XML取出節點資料
透過API對接第三方服務時,有時會遇到對方回傳是XML的資料格式,在PHP上可採用SimpleXML或DOM來進行解剖並取出節點資料。
一般XML資料格式都可用SimpleXML處理即可,可以用以下兩種指令來剖析XML
##剖析XML
##顯示指定節點資料
##資料取出示範
一般XML資料格式都可用SimpleXML處理即可,可以用以下兩種指令來剖析XML
- SimpleXMLElement() 或 simplexml_load_string()
處理示範:
##將XML資料存在變數上- $receive="<?xml version="1.0" encoding="UTF-8" ?>
- <sampledata>
- <response>
- <node_one>F</node_one>
- <node_two>NOT_EXIST</node_two>
- <node_three>
- <book1>test001</book1>
- <book2>test002</book2>
- </node_three>
- </response>
- </sampledata>";
##剖析XML
- $xml=new SimpleXMLElement($receive);
- 或
- $xml=simplexml_load_string($receive);
##顯示指定節點資料
- echo $xml->節點名稱
##資料取出示範
- echo $xml->node_one; →即顯示 F
- echo $xml->node_three->book2; →即顯示 test002
- 依此類推
一般無法剖析XML問題
- 檢查XML格式是否正確
若少了<?xml version="1.0" encoding="UTF-8" ?>或XML結構層次有誤就可能造成無法剖析問題。 - 格式正確但SimplyXML無法剖析
有些結構的XML資料SimplyXML並無法認得,這時可能就要轉用DOM來處理
這部份請參閱「php用DOM解剖xml取值」