PHP Conference Japan 2024

XMLReader::expand

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

XMLReader::expand將目前節點的副本作為 DOM 物件傳回

說明

public XMLReader::expand(?DOMNode $baseNode = null): DOMNode|false

此方法會複製目前節點並傳回相應的 DOM 物件。

參數

baseNode

定義所建立 DOM 物件的目標 DOMDocumentDOMNode

傳回值

結果會是 DOMNode 物件,或是錯誤時回傳 false

新增註記

使用者貢獻的註記 1 則註記

Sbastien
2 年前
XMLReader::expand() 將目前的子樹展開為 DOM。SimpleXML 也是不錯的選擇。為了避免在使用 simplexml_import_dom() 時出現類似「匯入的節點必須具有關聯文件」的警告,我們可以這樣做:

<?php

// 巨大的已壓縮 XML 檔案
$xml = XMLReader::open('compress.zlib:///path/to/my-data.xml.gz');

// 鎖定一個小的子樹
while ($xml->name !== 'my-targeted-element') {
$xml->read();
}

// 訣竅就在這裡...
// 子樹會被展開到一個空的檔案中...
$dom = $xml->expand(new DOMDocument());

// ... 這樣就可以用 SimpleXML 匯入了
$sx = simplexml_import_dom($dom);

// 現在我們可以用 SimpleXML $sx 處理我們的小子樹了
To Top