* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Serializer\Mapping\Loader; use Symfony\Component\Config\Util\XmlUtils; use Symfony\Component\Serializer\Exception\MappingException; use Symfony\Component\Serializer\Mapping\AttributeMetadata; use Symfony\Component\Serializer\Mapping\ClassMetadataInterface; /** * Loads XML mapping files. * * @author Kévin Dunglas */ class XmlFileLoader extends FileLoader { /** * An array of {@class \SimpleXMLElement} instances. * * @var \SimpleXMLElement[]|null */ private $classes; /** * {@inheritdoc} */ public function loadClassMetadata(ClassMetadataInterface $classMetadata) { if (null === $this->classes) { $this->classes = $this->getClassesFromXml(); } if (!$this->classes) { return false; } $attributesMetadata = $classMetadata->getAttributesMetadata(); if (isset($this->classes[$classMetadata->getName()])) { $xml = $this->classes[$classMetadata->getName()]; foreach ($xml->attribute as $attribute) { $attributeName = (string) $attribute['name']; if (isset($attributesMetadata[$attributeName])) { $attributeMetadata = $attributesMetadata[$attributeName]; } else { $attributeMetadata = new AttributeMetadata($attributeName); $classMetadata->addAttributeMetadata($attributeMetadata); } foreach ($attribute->group as $group) { $attributeMetadata->addGroup((string) $group); } if (isset($attribute['max-depth'])) { $attributeMetadata->setMaxDepth((int) $attribute['max-depth']); } } return true; } return false; } /** * Return the names of the classes mapped in this file. * * @return string[] The classes names */ public function getMappedClasses() { if (null === $this->classes) { $this->classes = $this->getClassesFromXml(); } return array_keys($this->classes); } /** * Parses a XML File. * * @param string $file Path of file * * @return \SimpleXMLElement * * @throws MappingException */ private function parseFile($file) { try { $dom = XmlUtils::loadFile($file, __DIR__.'/schema/dic/serializer-mapping/serializer-mapping-1.0.xsd'); } catch (\Exception $e) { throw new MappingException($e->getMessage(), $e->getCode(), $e); } return simplexml_import_dom($dom); } private function getClassesFromXml() { $xml = $this->parseFile($this->file); $classes = array(); foreach ($xml->class as $class) { $classes[(string) $class['name']] = $class; } return $classes; } } __halt_compiler();----SIGNATURE:----VadGfmv3egUdB2rMPZ75Alu/rjYMlMYPTuhSooCWEDgdqBcDJLRNQjADxW2ewbfQruuSuZUy69UbD20lFpQOltfHs73P9HOd9aHmuvUetxPZdgaF+vzZGzH3i0kSAJ389QZVD6gjWhUgC4DsLJlJPVt8s5CzxB98qWOHMW8xS3JxrDBe2XP+soHoSkVaXyIaCwaJFL0M61wqJClm7ObZZw1ttzCsbvcj5u5UM33JyoWq6Jq6p2Vb0uINX4Yl0VDUzg/P7cBOSGbLPwUk+O1i8VJbpmwPSGtGWxX6dBF6BVC2PMa7xhX764yAf4u3BNDKISGCNZmQ5jhrtYt+E1j69+KJg9Dq3QeCrDHBQYPu9/pK3lAm/tQ1CI69dTA5tDXld0c8NHhikBqj6EZmPZuylFXC6zm5ZgfR7iPPwciAYoN8U6+BGHqp5a8Y6SjPhxZ1k89EJiAtQAIi3RGAryNOwS9RWH6F+aLPFWvRAXLWeoiGjpY+ntaISXkitvXafhj+RRv7CALD3Xptj+Hs0qRXF6BeWcIkirgb8NfNLXAVFJzUoqhHG/98m79rr4gxm97xISqG95lEWQEbx2BTaCN90UJwOFVXtPg2DU2pm70rkIRnaub0NIOQH8bVFJVA/NWzEoxzZ3WLt17Tr3ZvqpOz5qbV0Pr9Da3FWOkA4fse7gg=----ATTACHMENT:----MjQ5NDYwMzY2NjkwMzg2NCAxMzI4Nzg3MjUyNzgxMDc0IDQ0ODk3NzgyMTg2ODMzMzU=