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

PHP 搭配 DOMXML 將 MySQL 查詢結果轉為 XML 完整實作

     編輯:PHP 綜合知識

早期 PHP 4/5 時代,domxml 擴展提供符合 W3C DOM 標準的 XML 操作介面。本文示範如何封裝 CMySQLXML 類別,將 MySQL 查詢結果自動轉換為結構化 XML 文件,適用於早期 Web Service 或資料交換需求。

環境準備(PHP 4.3.4 + MySQL 4.0.16 Windows 範例)

  1. 安裝 PHP(需同時下載 ZIP 版以取得擴展 DLL)。
  2. 將 iconv.dll 放入 Windows 系統目錄。
  3. 在 PHP 目錄建立 extensions 資料夾,放入 php_domxml.dll。
  4. 編輯 php.ini:
    • extension_dir = "C:\PHP\extensions"
    • 啟用 extension=php_domxml.dll(移除前分號)。
  5. 重啟 Web 伺服器(IIS/Apache)。

核心類別實作

class CMySQLXML {
    var $host, $user, $password, $db;

    function CMySQLXML($host, $user, $password, $db) {
        $this->host = $host;
        $this->user = $user;
        $this->password = $password;
        $this->db = $db;
    }

    function run_sql_return_xml($sql_string) {
        $conn = mysql_connect($this->host, $this->user, $this->password);
        mysql_select_db($this->db, $conn);
        $result = mysql_query($sql_string, $conn);

        $doc = domxml_open_mem(""); // 建立空 DOMDocument
        while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
            $num_fields = mysql_num_fields($result);
            $table_name = mysql_field_table($result, 0);
            $row_element = $doc->create_element($table_name);
            $doc_root = $doc->document_element();
            $row_element = $doc_root->append_child($row_element);

            for ($i = 0; $i < $num_fields; $i++) {
                $field_name = mysql_field_name($result, $i);
                $col_element = $doc->create_element($field_name);
                $col_element = $row_element->append_child($col_element);
                $text_node = $doc->create_text_node($row[$field_name]);
                $col_element->append_child($text_node);
            }
        }
        mysql_free_result($result);
        mysql_close($conn);
        return $doc->dump_mem(false); // 回傳 XML 字串
    }
}

使用範例

<?php
require_once('CMySQLXML.php');
$xmlObj = new CMySQLXML('localhost', 'user', 'pass', 'test');
header('Content-Type: text/xml');
echo $xmlObj->run_sql_return_xml("SELECT * FROM users");
?>

產出 XML 結構範例

<users>
  <users>
    <id>1</id>
    <name>John</name>
    <email>john@example.com</email>
  </users>
  <users>
    <id>2</id>
    <name>Jane</name>
    <email>jane@example.com</email>
  </users>
</users>

現代替代方案

PHP 5+ 建議改用 DOMDocument(內建)或 SimpleXML 搭配 PDO/MySQLi,domxml 已於 PHP 5.1 移除。現代寫法更簡潔且效能更佳。

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