@@ -691,7 +691,24 @@ When serializing, you can set a callback to format a specific object property::
691691Normalizers
692692-----------
693693
694- There are several types of normalizers available:
694+ Normalizers turn **object ** into **array ** and vice versa. They implement
695+ ::class: `Symfony\\ Component\\ Serializer\\ Normalizer\\ NormalizableInterface `
696+ for normalize (object to array) and
697+ :class: `Symfony\\ Component\\ Serializer\\ Normalizer\\ DenormalizableInterface ` for denormalize
698+ (array to object).
699+
700+ You can add new normalizers to a Serializer instance by using its first constructor argument::
701+
702+ use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
703+ use Symfony\Component\Serializer\Serializer;
704+
705+ $normalizers = [new ObjectNormalizer()];
706+ $serializer = new Serializer($normalizers, []);
707+
708+ Built-in Normalizers
709+ ~~~~~~~~~~~~~~~~~~~~
710+
711+ The Serializer component provides several built-in normalizers:
695712
696713:class: `Symfony\\ Component\\ Serializer\\ Normalizer\\ ObjectNormalizer `
697714 This normalizer leverages the:doc: `PropertyAccess Component </components/property_access >`
@@ -765,6 +782,14 @@ There are several types of normalizers available:
765782:class: `Symfony\\ Component\\ Serializer\\ Normalizer\\ ProblemNormalizer `
766783 Normalizes errors according to the API Problem spec `RFC 7807 `_.
767784
785+ ..note ::
786+
787+ You can also create your own Normalizer to use another structure. Read more at
788+ :doc: `/serializer/custom_normalizer `.
789+
790+ All these normalizers are enabled by default when using the Serializer component
791+ in a Symfony application.
792+
768793.. _component-serializer-encoders :
769794
770795Encoders
@@ -803,6 +828,11 @@ The Serializer component provides several built-in encoders:
803828:class: `Symfony\\ Component\\ Serializer\\ Encoder\\ CsvEncoder `
804829 This encoder encodes and decodes data in `CSV `_.
805830
831+ ..note ::
832+
833+ You can also create your own Encoder to use another structure. Read more at
834+ :doc: `/serializer/custom_encoders `.
835+
806836All these encoders are enabled by default when using the Serializer component
807837in a Symfony application.
808838
@@ -923,25 +953,55 @@ which defines the configuration options for the XmlEncoder an associative array:
923953
924954These are the options available:
925955
926- ====================== ==================================================== ==========================
927- Option Description Default
928- ====================== ==================================================== ==========================
929- ``xml_format_output `` If set to true, formats the generated XML with line
930- breaks and indentation.
931- ``xml_version `` Sets the XML version attribute ``1.1 ``
932- ``xml_encoding `` Sets the XML encoding attribute ``utf-8 ``
933- ``xml_standalone `` Adds standalone attribute in the generated XML ``true ``
934- ``xml_root_node_name `` Sets the root node name (default: ``response ``).
935- ``remove_empty_tags `` If set to true, removes all empty tags in the ``false ``
936- generated XML
937- ====================== ==================================================== ==========================
956+ ============================== ================================================= ==========================
957+ Option Description Default
958+ ============================== ================================================= ==========================
959+ ``xml_format_output `` If set to true, formats the generated XML with
960+ line breaks and indentation.
961+ ``xml_version `` Sets the XML version attribute ``1.1 ``
962+ ``xml_encoding `` Sets the XML encoding attribute ``utf-8 ``
963+ ``xml_standalone `` Adds standalone attribute in the generated XML ``true ``
964+ ``xml_type_cast_attributes `` This provides the ability to forgot the attribute ``true ``
965+ type casting
966+ ``xml_root_node_name `` Sets the root node name (default: ``response ``).
967+ ``as_collection `` Always returns results as a collection, even if
968+ only one line is decoded
969+ ``decoder_ignored_node_types `` Sets nodes to be ignored in the decode ``[\XML_PI_NODE, \XML_COMMENT_NODE] ``
970+ ``encoder_ignored_node_types `` Sets nodes to be ignored in the encode ``[] ``
971+ ``load_options `` XML loading `options with libxml `_ ``\LIBXML_NONET | \LIBXML_NOBLANKS ``
972+ ``remove_empty_tags `` If set to true, removes all empty tags in the ``false ``
973+ generated XML
974+ ============================== ================================================= ==========================
975+
976+ ..versionadded ::4.2
977+
978+ The ``decoder_ignored_node_types `` & ``encoder_ignored_node_types `` options was introduced in Symfony 4.2.
938979
939980The ``YamlEncoder ``
940981~~~~~~~~~~~~~~~~~~~
941982
942983This encoder requires the:doc: `Yaml Component </components/yaml >` and
943984transforms from and to Yaml.
944985
986+ The ``YamlEncoder `` Context Options
987+ ...................................
988+
989+ The ``encode() `` method, like other encoder, uses ``context `` to set
990+ configuration options for the YamlEncoder an associative array::
991+
992+ $xmlEncoder->encode($array, 'xml', $context);
993+
994+ These are the options available:
995+
996+ =============== ======================================================== ==========================
997+ Option Description Default
998+ =============== ======================================================== ==========================
999+ ``yaml_inline `` The level where you switch to inline YAML ``0 ``
1000+ ``yaml_indent `` The level of indentation (used internally) ``0 ``
1001+ ``yaml_flags `` A bit field of ``Yaml::DUMP_* `` / ``PARSE_* `` constants ``0 ``
1002+ to customize the encoding / decoding YAML string
1003+ =============== ======================================================== ==========================
1004+
9451005Skipping ``null `` Values
9461006------------------------
9471007
@@ -1508,6 +1568,7 @@ Learn more
15081568.. _`PSR-1 standard` :https://www.php-fig.org/psr/psr-1/
15091569.. _`JMS serializer` :https://github.com/schmittjoh/serializer
15101570.. _RFC3339 :https://tools.ietf.org/html/rfc3339#section-5.8
1571+ .. _`options with libxml` :https://www.php.net/manual/en/libxml.constants.php
15111572.. _JSON :http://www.json.org/
15121573.. _XML :https://www.w3.org/XML/
15131574.. _YAML :https://yaml.org/