PHP 5內建XMLReader類,基於libxml2的xmlTextReader,提供**拉式、流式**XML解析,記憶體佔用極低,大文件處理性能遠超DOM/SimpleXML。
read()獲取下一節點,而非推模式被動回調,控制權在開發者手中。Iterator設計模式。接收XML-RPC請求(methodCall/sqrt),解析參數double,計算平方根,返回XML-RPC響應(methodResponse/params/double)。
$reader = new XMLReader();
$reader->xml($HTTP_RAW_POST_DATA); // 或 $reader->open('https://example.com/feed.atom')
while ($reader->read()) {
switch ($reader->nodeType) {
case XMLReader::ELEMENT:
if ($reader->localName === 'methodName') { $reader->read(); $method = $reader->value; }
if ($reader->localName === 'double') { $reader->read(); $value = $reader->value; }
break;
}
}
$reader->close();
// 邏輯處理後輸出XML響應
| 屬性 | 說明 |
|---|---|
localName | 無前綴本地節點名 |
name | 帶前綴完整節點名(如#text、#comment) |
namespaceURI | 命名空間URI |
nodeType | 節點類型整數(1=元素, 2=屬性, 3=文本...) |
value | 節點文本內容 |
hasValue | 是否有文本值 |
大型XML導入/導出、XML-RPC/SOAP服務端、RSS/Atom聚合器、流式數據轉換管道。配合XMLWriter可構建高效讀寫管道。