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.
Пример #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);
     }
 }
Пример #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);
         }
     }
 }