只有从父 DOMDocument 创建时,DOMDocumentFragment 才显得有用,例如:
1. $dom = new DOMDocument("1.0","UTF-8");
2. $docFrag = $dom->createDocumentFragment();
3. 现在将项目附加到 $docFrag
4. 将 $docFrag 内容移植回 $dom 的所需位置
相反,采用这种方法
1. $dom = new DOMDocument("1.0","UTF-8");
2. $docFrag = new DOMDocumentFragment();
3. 现在将项目附加到 $docFrag
...步骤 3 将因“只读”错误而失败,因为 $docFrag 不是作为 DOMDocument 的子项创建的。
我不确定这样做的原因:网上有人提到安全性问题,也有人提到设计缺陷,但无论原因是什么,当想要将通用的独立 DocumentFragment 封装到类中以便轻松移植到所需的树时,这确实非常限制性。我看到的唯一解决方法从性能角度来看代价很高,从编码角度来看很麻烦,例如,创建一个临时使用的虚拟 $dom。
(这在 PHP 5.3 中有效) 我把它放在这里是因为我浪费了很多时间才找到它——我希望这能节省其他人的时间。
使用新的 DOMDocumentFramt