This class helps simplify some of the logic behind writing xml with the eccentricities of the XmlWriter interface. It's calls inherit the same stateful considerations that are found while working directly with XmlWriter.
Esempio n. 1
0
 /**
  * @param WriterHelper $writer
  * @param ClassMetadata $classMetadata
  * @param string $fieldName
  * @param mixed $fieldValue
  */
 private function _writeText(WriterHelper $writer, ClassMetadata $classMetadata, $fieldName, $fieldValue)
 {
     $xmlName = $classMetadata->getFieldXmlName($fieldName);
     $type = $classMetadata->getTypeOfField($fieldName);
     $mapping = $classMetadata->getFieldMapping($fieldName);
     $prefix = isset($mapping['prefix']) ? $mapping['prefix'] : null;
     if ($classMetadata->isCollection($fieldName)) {
         if ($classMetadata->hasFieldWrapping($fieldName)) {
             $writer->startElement($mapping['wrapper'], $prefix);
         }
         foreach ($fieldValue as $value) {
             $writer->writeElement($xmlName, Type::getType($type)->convertToXmlValue($value), $prefix);
         }
         if ($classMetadata->hasFieldWrapping($fieldName)) {
             $writer->endElement();
         }
     } else {
         $writer->writeElement($xmlName, Type::getType($type)->convertToXmlValue($fieldValue), $prefix);
     }
 }
Esempio n. 2
0
 /**
  * @param WriterHelper $writer
  * @param ClassMetadata $classMetadata
  * @param string $fieldName
  * @param mixed $fieldValue
  */
 private function writeElement(WriterHelper $writer, ClassMetadata $classMetadata, $fieldName, $fieldValue)
 {
     $fieldType = $classMetadata->getTypeOfField($fieldName);
     $mapping = $classMetadata->getFieldMapping($fieldName);
     $prefix = isset($mapping['prefix']) ? $mapping['prefix'] : null;
     if ($this->classMetadataFactory->hasMetadataFor($fieldType)) {
         if ($classMetadata->isCollection($fieldName)) {
             if ($classMetadata->hasFieldWrapping($fieldName)) {
                 $writer->startElement($mapping['wrapper'], $prefix);
             }
             foreach ($fieldValue as $value) {
                 $this->doMarshal($value, $writer);
             }
             if ($classMetadata->hasFieldWrapping($fieldName)) {
                 $writer->endElement();
             }
         } else {
             $this->doMarshal($fieldValue, $writer);
         }
     }
 }