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

PHP XML 解析類實作範例:輕鬆處理 XML 檔案與字串

     編輯:PHP 相關知識

PHP XML 解析類實作範例

在 PHP 開發中,處理 XML 資料是常見需求。本文提供一個實用的 XMLParser 類別,能夠將 XML 檔案或字串轉換為 PHP 陣列,方便後續資料操作。

核心功能

  • loadXmlFile():讀取 XML 檔案並輸出陣列
  • loadXmlString():解析 XML 字串並輸出陣列
  • 內建 XML 格式驗證,確保資料完整性
  • 支援 CDATA 區段處理

類別程式碼

<?php
/** XML 檔案解析類
 * Date: 2013-02-01
 * Author: fdipzone
 * Ver: 1.0
 */
class XMLParser {
    /** 讀取 XML 檔案
     * @param String $xmlfile 檔案路徑
     * @return Array [成功標誌, 資料陣列]
     */
    public function loadXmlFile($xmlfile) {
        $xmlstring = file_exists($xmlfile) ? file_get_contents($xmlfile) : '';
        list($flag, $data) = $this->parser($xmlstring);
        return $this->response($flag, $data);
    }

    /** 讀取 XML 字串
     * @param String $xmlstring XML 內容
     * @return Array [成功標誌, 資料陣列]
     */
    public function loadXmlString($xmlstring) {
        list($flag, $data) = $this->parser($xmlstring);
        return $this->response($flag, $data);
    }

    /** 解析 XML 內容(私有方法) */
    private function parser($xmlstring) {
        $flag = false;
        $data = array();
        if ($this->checkXmlFormat($xmlstring)) {
            $flag = true;
            $data = simplexml_load_string($xmlstring, 'SimpleXMLElement', LIBXML_NOCDATA);
            $this->objectToArray($data);
        }
        return array($flag, $data);
    }

    /** 檢查 XML 格式 */
    private function checkXmlFormat($xmlstring) {
        if ($xmlstring === '') return false;
        $xml_parser_obj = xml_parser_create();
        return xml_parse_into_struct($xml_parser_obj, $xmlstring, $vals, $indexs) === 1;
    }

    /** 物件轉陣列(遞迴處理) */
    private function objectToArray(&$object) {
        $object = (array)$object;
        foreach ($object as $key => $value) {
            if ($value === '') {
                $object[$key] = "";
            } elseif (is_object($value) || is_array($value)) {
                $this->objectToArray($value);
                $object[$key] = $value;
            }
        }
    }

    /** 統一回應格式 */
    private function response($flag = false, $data = array()) {
        return array($flag, $data);
    }
}
?>

使用範例

<?php
require "XMLParser.class.php";

$xmlfile = 'file.xml';
$xmlstring = '<?xml version="1.0" encoding="utf-8"?>
<xmlroot>
    <status>1000</status>
    <info></info>
    <result>
        <id>100</id>
        <name>fdipzone</name>
        <gender>1</gender>
        <age>28</age>
    </result>
</xmlroot>';

echo '<pre>';
$xml_parser = new XMLParser();

echo "解析 XML 檔案\r\n";
list($flag, $xmldata) = $xml_parser->loadXmlFile($xmlfile);
if ($flag) print_r($xmldata);

echo "解析 XML 字串\r\n";
list($flag, $xmldata) = $xml_parser->loadXmlString($xmlstring);
if ($flag) print_r($xmldata);
echo '</pre>';
?>

補充說明

PHP 的 XML 相關預定義常數可參考官方文件。此外,文中也提供了使用 DOMDocument 產生 XML 檔案的範例,以及 ASP 讀取 XML 的參考代碼,供不同需求的開發者參考。

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