/** * @see Loadable::load * @param string $source * @param string $contentType * @param array|\Traversable|Options $options * @return Document|Result|NULL */ public function load($source, $contentType, $options = []) { if ($this->supports($contentType) && !empty($source)) { $dom = new Document(); $dom->preserveWhiteSpace = FALSE; $dom->registerNamespace('jx', self::XMLNS_JSONX); if ($this->startsWith($source, '<')) { $dom->loadXML($source); } else { $dom->load($source); } $target = new Document(); $target->registerNamespace('json', self::XMLNS_JSONDOM); if (isset($dom->documentElement)) { $this->transferNode($dom->documentElement, $target); } return $target; } return NULL; }