public function getFragment($xml, $contentType = 'text/xml', $includeTextNodes = TRUE, $limit = -1)
{
$xml = $this->getContentAsString($xml);
$loader = $this->getOwner()->loaders();
if (!$loader->supports($contentType)) {
throw new Exceptions\InvalidFragmentLoader(get_class($loader));
}
if (!$xml) {
return array();
}
$result = array();
$fragment = $loader->loadFragment($xml, $contentType, $this->getOwner()->getLoadingOptions($contentType));
if ($fragment) {
$fragment = $this->getOwner()->document->importNode($fragment, TRUE);
for ($i = $fragment->childNodes->length - 1; $i >= 0; $i--) {
$element = $fragment->childNodes->item($i);
if ($element instanceof \DOMElement || $includeTextNodes && Constraints::isNode($element)) {
array_unshift($result, $element);
$element->parentNode->removeChild($element);
}
}
}
return $this->getLimitedArray($result, $limit);
}