Вам нужно создать DOMDocumentFragment
вместо элемента. Когда вы устанавливаете текст элемента - как вы делаете с помощью метода createElement
- это кодируется HTML. Это правильное поведение. Если вы хотите включить произвольный XML, используйте createDocumentFragment
и appendXML
:
<?php
$dom = new DOMDocument();
$dom->formatOutput = true; //Formating the output
$ele = $dom->createElement("someele", "Hello");
$dom->appendChild( $ele );
$string = "<yowhatsup><noway>some text</noway></yowhatsup>";
$frag = $dom->createDocumentFragment();
$frag->appendXML($string);
$dom->appendChild( $frag );
Но будьте очень осторожными, чтобы санировать данные, поступающие от вашего пользователя. Если вы плохо очистите, у вас получится XSS-уязвимость, позволяющая вставлять произвольный контент.