Jackalope\NodeType\NodeTypeXmlConverter::getNodeTypeDefinitionFromXml PHP Méthode

getNodeTypeDefinitionFromXml() public méthode

Convert NodeTypeDefinition XML into array.
public getNodeTypeDefinitionFromXml ( DOMElement $node ) : array
$node DOMElement
Résultat array
    public function getNodeTypeDefinitionFromXml(DOMElement $node)
    {
        $data = array();
        // nodetype
        $data['name'] = $node->getAttribute('name');
        $data['isAbstract'] = Helper::getBoolAttribute($node, 'isAbstract');
        $data['isMixin'] = Helper::getBoolAttribute($node, 'isMixin');
        $data['isQueryable'] = Helper::getBoolAttribute($node, 'isQueryable');
        $data['hasOrderableChildNodes'] = Helper::getBoolAttribute($node, 'hasOrderableChildNodes');
        $data['primaryItemName'] = $node->getAttribute('primaryItemName') ?: null;
        $data['declaredSuperTypeNames'] = array();
        $xp = new DOMXPath($node->ownerDocument);
        $supertypes = $xp->query('supertypes/supertype', $node);
        foreach ($supertypes as $supertype) {
            $data['declaredSuperTypeNames'][] = $supertype->nodeValue;
        }
        $data['declaredPropertyDefinitions'] = array();
        $properties = $xp->query('propertyDefinition', $node);
        foreach ($properties as $propertyDefinition) {
            $data['declaredPropertyDefinitions'][] = $this->getPropertyDefinitionFromXml($propertyDefinition);
        }
        $data['declaredNodeDefinitions'] = array();
        $declaredNodeDefinitions = $xp->query('childNodeDefinition', $node);
        foreach ($declaredNodeDefinitions as $nodeDefinition) {
            $data['declaredNodeDefinitions'][] = $this->getNodeDefinitionFromXml($nodeDefinition);
        }
        return $data;
    }

Usage Example

 /**
  * Reads the node type definition from an xml element
  *
  * @param DOMElement $node The dom element to read information from
  */
 protected function fromXml(DOMElement $node)
 {
     $nodeTypeXmlConverter = new NodeTypeXmlConverter($this->factory);
     $this->fromArray($nodeTypeXmlConverter->getNodeTypeDefinitionFromXml($node));
 }