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 處理我們的小子樹了