Browse Source

Fix namespace prefix in child nodes

Marcos Passos 12 years ago
parent
commit
c06d3f9b3b
1 changed files with 3 additions and 2 deletions
  1. 3 2
      src/JMS/Serializer/XmlSerializationVisitor.php

+ 3 - 2
src/JMS/Serializer/XmlSerializationVisitor.php

@@ -184,8 +184,9 @@ class XmlSerializationVisitor extends AbstractVisitor
         if (null === $this->document) {
             $this->document = $this->createDocument(null, null, false);
             $this->document->appendChild($this->currentNode = $this->document->createElement($metadata->xmlRootName ?: $this->defaultRootName));
-            $this->addNamespaceAttributes($metadata, $this->currentNode);
         }
+        
+        $this->addNamespaceAttributes($metadata, $this->currentNode);
 
         $this->hasValue = false;
     }
@@ -270,7 +271,7 @@ class XmlSerializationVisitor extends AbstractVisitor
         if ($addEnclosingElement = (!$metadata->xmlCollection || !$metadata->xmlCollectionInline) && !$metadata->inline) {
             $elementName = $this->namingStrategy->translateName($metadata);
             if ('' !== $namespace = (string) $metadata->xmlNamespace) {
-                if (!$prefix = $this->document->lookupPrefix($namespace)) {
+                if (!$prefix = $this->currentNode->lookupPrefix($namespace)) {
                     $prefix = 'ns-'.  substr(sha1($namespace), 0, 8);
                 }
                 $element = $this->document->createElementNS($namespace, $prefix.':'.$elementName);