SimpleXML и DOM работают без сбоев, поэтому вы можете использовать тот же XML, взаимодействующий с ним, что и SimpleXML или DOM.
Например:
$simplexml = simplexml_load_string("<xml></xml>");
$simplexml->simple = "it is simple.";
$domxml = dom_import_simplexml($simplexml);
$node = $domxml->ownerDocument->createElement("dom", "yes, with DOM too.");
$domxml->ownerDocument->firstChild->appendChild($node);
echo (string)$simplexml->dom;
Вы получите результат:
"yes, with DOM too."
Потому что, когда вы импортируете объект (либо в simplexml, либо в dom), он использует один и тот же подчеркивающий объект PHP по ссылке.
Я понял это, когда пытался исправить некоторые ошибки в SimpleXML, расширив / обернув объект.
См. http://code.google.com/p/blibrary/source/browse/trunk/classes/bXml.class.inc для примеров.
Это действительно хорошо для небольших фрагментов XML (-2 МБ), поскольку DOM / SimpleXML помещают весь документ в память с некоторыми дополнительными издержками (например, x2 или x3). Для больших кусков XML (+ 2 МБ) вы захотите использовать XMLReader / XMLWriter для анализа стиля SAX с небольшим объемом памяти. Я успешно использовал документы размером более 14 МБ с XMLReader / XMLWriter.