DOMDocumentFragment 只有在从父 DOMDocument 创建时才有用,例如:
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