Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. XmlEncoder.php

function XmlEncoder::encode

Same name in this branch
  1. 11.1.x core/modules/serialization/src/Encoder/XmlEncoder.php \Drupal\serialization\Encoder\XmlEncoder::encode()

Overrides EncoderInterface::encode

File

vendor/symfony/serializer/Encoder/XmlEncoder.php, line 82

Class

XmlEncoder
@author Jordi Boggiano <j.boggiano@seld.be> @author John Wards <jwards@whiteoctober.co.uk> @author Fabian Vogler <fabian@equivalence.ch> @author Kévin Dunglas <dunglas@gmail.com> @author Dany Maillard…

Namespace

Symfony\Component\Serializer\Encoder

Code

public function encode(mixed $data, string $format, array $context = []) : string {
    $encoderIgnoredNodeTypes = $context[self::ENCODER_IGNORED_NODE_TYPES] ?? $this->defaultContext[self::ENCODER_IGNORED_NODE_TYPES];
    $ignorePiNode = \in_array(\XML_PI_NODE, $encoderIgnoredNodeTypes, true);
    if ($data instanceof \DOMDocument) {
        return $this->saveXml($data, $ignorePiNode ? $data->documentElement : null);
    }
    $xmlRootNodeName = $context[self::ROOT_NODE_NAME] ?? $this->defaultContext[self::ROOT_NODE_NAME];
    $dom = $this->createDomDocument($context);
    if (null !== $data && !\is_scalar($data)) {
        $root = $dom->createElement($xmlRootNodeName);
        $dom->appendChild($root);
        $this->buildXml($root, $data, $format, $context, $xmlRootNodeName);
    }
    else {
        $this->appendNode($dom, $data, $format, $context, $xmlRootNodeName);
    }
    return $this->saveXml($dom, $ignorePiNode ? $dom->documentElement : null, $context[self::SAVE_OPTIONS] ?? $this->defaultContext[self::SAVE_OPTIONS]);
}
RSS feed
Powered by Drupal