FluentDOM\Loader\JSONx::transferNode PHP Method

transferNode() private method

private transferNode ( DOMNode $node, DOMNode $target )
$node DOMNode
$target DOMNode
    private function transferNode(\DOMNode $node, \DOMNode $target)
    {
        if ($node->namespaceURI === self::XMLNS_JSONX) {
            if ($target instanceof Document) {
                $normalizedName = $name = 'json:json';
            } else {
                $name = $node->getAttribute('name');
                $normalizedName = QualifiedName::normalizeString($name, self::DEFAULT_QNAME);
            }
            $type = $node->localName;
            $newNode = $target->appendElement($normalizedName);
            if ($name !== $normalizedName && $name !== '') {
                $newNode->setAttribute('json:name', $name);
            }
            switch ($type) {
                case 'object':
                    if ($node('count(*) > 0')) {
                        foreach ($node('*') as $childNode) {
                            $this->transferNode($childNode, $newNode);
                        }
                        return;
                    }
                    break;
                case 'array':
                    foreach ($node('*') as $childNode) {
                        $this->transferNode($childNode, $newNode);
                    }
                    break;
                case 'string':
                    $newNode->append((string) $node);
                    return;
                default:
                    $newNode->append((string) $node);
                    break;
            }
            $newNode->setAttribute('json:type', $type);
        }
    }