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

一个 DOMNode,定义为创建的 DOM 对象的目标 DOMDocument

返回值

生成的 DOMNode 或在错误时返回 false

添加注释

用户贡献的注释 1 条注释

-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