如何讓PHP順利解剖XML取出節點資料

透過API對接第三方服務時,有時會遇到對方回傳是XML的資料格式,在PHP上可採用SimpleXML或DOM來進行解剖並取出節點資料。

一般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取值

這個網誌中的熱門文章

沒印表機沒關係 便利商店找印去

被時代淘汱的英文怎麼說

探訪神秘的烏法魯神殿

色情廣告視窗關不掉? 動手解解看吧~

玩轉水晶石工作室 妝點個人部落