PHP Libxml 函數與常數完整參考
簡介
Libxml 函數與常數配合 SimpleXML、DOM、XSLT 等擴展使用,提供 XML 文檔載入、驗證、錯誤處理、串流上下文等底層功能。需要安裝 libxml2 函式庫(xmlsoft.org)。PHP 5 起內建支援。
核心函數
| 函數 | 說明 | PHP 版本 |
libxml_clear_errors() | 清空 Libxml 錯誤緩衝區 | 5 |
libxml_get_errors() | 取得錯誤陣列 | 5 |
libxml_get_last_error() | 取得最後一個錯誤 | 5 |
libxml_set_streams_context() | 為下一次文檔載入/寫入設定串流上下文 | 5 |
libxml_use_internal_errors() | 停用 Libxml 標準錯誤輸出,允許自行讀取錯誤資訊 | 5 |
常用常數 (載入/驗證選項)
| 常數 | 說明 | PHP 版本 |
| LIBXML_COMPACT | 啟用小型節點分配優化,提升效能 | 5 |
| LIBXML_DTDATTR | 設定預設 DTD 屬性 | 5 |
| LIBXML_DTDLOAD | 載入外部 DTD 子集 | 5 |
| LIBXML_DTDVALID | 透過 DTD 進行驗證 | 5 |
| LIBXML_NOBLANKS | 移除空白節點 | 5 |
| LIBXML_NOCDATA | 將 CDATA 視為文本節點 | 5 |
| LIBXML_NOEMPTYTAG | 展開空標籤 (如 <br/> → <br></br>),僅限 DOMDocument::save() | 5 |
| LIBXML_NOENT | 替換實體參考 | 5 |
| LIBXML_NOERROR | 不顯示錯誤報告 | 5 |
| LIBXML_NONET | 載入文檔時阻止網路存取 | 5 |
| LIBXML_NOWARNING | 不顯示警告報告 | 5 |
| LIBXML_NOXMLDECL | 儲存時省略 XML 聲明 | 5 |
| LIBXML_NSCLEAN | 移除多餘的命名空間聲明 | 5 |
| LIBXML_XINCLUDE | 啟用 XInclude 替換 | 5 |
錯誤等級常數
LIBXML_ERR_NONE — 無錯誤
LIBXML_ERR_WARNING — 簡單警告
LIBXML_ERR_ERROR — 可恢復錯誤
LIBXML_ERR_FATAL — 致命錯誤
版本資訊常數
LIBXML_VERSION — 整數版本號 (如 20901 代表 2.9.1)
LIBXML_DOTTED_VERSION — 點號版本字符串 (如 "2.9.1")
實用範例:自定義錯誤處理
<?php
libxml_use_internal_errors(true);
$doc = new DOMDocument();
$doc->load('example.xml');
if (!$doc->schemaValidate('schema.xsd')) {
$errors = libxml_get_errors();
foreach ($errors as $error) {
echo "Line {$error->line}: {$error->message}\n";
}
libxml_clear_errors();
}
?>