首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

CodeIgniter 使用 SimpleXML 將 XML 轉換為物件的完整實作

     編輯:PHP 相關知識

CodeIgniter 整合 SimpleXML:XML 轉物件實戰指南

SimpleXML 是 PHP 核心擴展之一,提供直觀的 XML 解析介面。在 CodeIgniter 專案中,封裝一個專用類別可統一處理 XML 轉換邏輯,提升代碼可維護性。

核心實作類別

<?php
class CI_ManipulateXML {
    private $xmlContent = '';

    public function __construct(string $xmlContent) {
        $this->xmlContent = $xmlContent;
    }

    /**
     * 將 XML 字串轉換為 SimpleXMLElement 物件
     * @return SimpleXMLElement|false 成功返回物件,失敗返回 false
     */
    public function convertToObject() {
        try {
            // 載入 XML 字串
            $xmlObject = new SimpleXMLElement($this->xmlContent);
            
            // 檢查是否成功建立物件
            if ($xmlObject === false) {
                return false;
            }
            return $xmlObject;
        } catch (Exception $e) {
            // 記錄錯誤日誌(建議整合 CI 的 log_message)
            log_message('error', 'XML 轉換失敗: ' . $e->getMessage());
            return false;
        }
    }
}
?>

控制器中使用範例

<?php
class Api extends CI_Controller {
    public function parseXml() {
        $rawXml = $this->input->raw_input_stream; // 或從檔案讀取
        
        $this->load->library('manipulate_xml', $rawXml);
        $xmlObj = $this->manipulate_xml->convertToObject();
        
        if ($xmlObj) {
            // 存取節點:$xmlObj->book[0]->title
            $this->output->set_content_type('application/json')
                         ->set_output(json_encode($xmlObj));
        } else {
            show_error('XML 格式錯誤', 400);
        }
    }
}
?>

進階技巧

  • 命名空間處理:使用 $xmlObj->children('ns', true) 存取帶命名空間的節點
  • 屬性存取:透過 $node->attributes() 獲取屬性陣列
  • XPath 查詢:轉為 DOMDocument 後使用 DOMXPath 進行複雜查詢

錯誤處理最佳實踐

  1. 啟用 libxml_use_internal_errors(true) 捕獲解析警告
  2. 解析後呼叫 libxml_get_errors() 取得詳細錯誤資訊
  3. 釋放記憶體:libxml_clear_errors()
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved