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
ファイル: XmlMarshaller.php プロジェクト: GromNaN/oxm
 /**
  * @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
ファイル: XmlMarshaller.php プロジェクト: doctrine/oxm
 /**
  * @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);
         }
     }
 }