XmlSerializer#

class xsdata.formats.dataclass.serializers.XmlSerializer(config=<factory>, context=<factory>, writer=<class 'xsdata.formats.dataclass.serializers.writers.native.XmlEventWriter'>)[source]#

Xml serializer for data classes.

Parameters:
writer#

alias of XmlEventWriter

render(obj, ns_map=None)[source]#

Serialize the input model instance to xml string.

Parameters:
  • obj (Any) – The input model instance to serialize

  • ns_map (Optional[Dict]) – A user defined namespace prefix-URI map

Return type:

str

Returns:

The serialized xml string output.

write(out, obj, ns_map=None)[source]#

Serialize the given object to the output text stream.

Parameters:
  • out (TextIO) – The output text stream

  • obj (Any) – The input model instance to serialize

  • ns_map (Optional[Dict]) – A user defined namespace prefix-URI map

write_object(obj)[source]#

Convert a user model, or derived element instance to sax events.

Parameters:

obj (Any) – A user model, or derived element instance

Yields:

An iterator of sax events.

Return type:

Iterator[Union[Tuple[Literal['start'], str], Tuple[Literal['attr'], str, Any], Tuple[Literal['data'], str], Tuple[Literal['end'], str]]]

write_dataclass(obj, namespace=None, qname=None, nillable=False, xsi_type=None)[source]#

Convert a model instance to sax events.

Optionally override the qualified name and the xsi attributes type and nil.

Parameters:
  • obj (Any) – A model instance

  • namespace (Optional[str]) – The field namespace URI

  • qname (Optional[str]) – Override the field qualified name

  • nillable (bool) – Specifies whether the field is nillable

  • xsi_type (Optional[str]) – Override the field xsi type

Yields:

An iterator of sax events.

Return type:

Iterator[Union[Tuple[Literal['start'], str], Tuple[Literal['attr'], str, Any], Tuple[Literal['data'], str], Tuple[Literal['end'], str]]]

write_xsi_type(value, var, namespace)[source]#

Convert a xsi:type value to sax events.

The value can be assigned to wildcard, element or compound fields

Parameters:
  • value (Any) – A model instance

  • var (XmlVar) – The field metadata instance

  • namespace (Optional[str]) – The field namespace URI

Yields:

An iterator of sax events.

Return type:

Iterator[Union[Tuple[Literal['start'], str], Tuple[Literal['attr'], str, Any], Tuple[Literal['data'], str], Tuple[Literal['end'], str]]]

write_value(value, var, namespace)[source]#

Convert any value to sax events according to the var instance.

The order of the checks is important as more than one condition can be true.

Parameters:
  • value (Any) – The input value

  • var (XmlVar) – The field metadata instance

  • namespace (Optional[str]) – The class namespace URI

Yields:

An iterator of sax events.

Return type:

Iterator[Union[Tuple[Literal['start'], str], Tuple[Literal['attr'], str, Any], Tuple[Literal['data'], str], Tuple[Literal['end'], str]]]

write_list(values, var, namespace)[source]#

Convert an array of values to sax events.

Parameters:
  • values (Iterable) – A list, set, tuple instance

  • var (XmlVar) – The field metadata instance

  • namespace (Optional[str]) – The class namespace

Yields:

An iterator of sax events.

Return type:

Iterator[Union[Tuple[Literal['start'], str], Tuple[Literal['attr'], str, Any], Tuple[Literal['data'], str], Tuple[Literal['end'], str]]]

write_tokens(value, var, namespace)[source]#

Convert an array of token values to sax events.

Parameters:
  • value (Any) – A list, set, tuple instance

  • var (XmlVar) – The field metadata instance

  • namespace (Optional[str]) – The class namespace

Yields:

An iterator of sax events.

Return type:

Iterator[Union[Tuple[Literal['start'], str], Tuple[Literal['attr'], str, Any], Tuple[Literal['data'], str], Tuple[Literal['end'], str]]]

write_mixed_content(values, var, namespace)[source]#

Convert mixed content values to sax events.

Parameters:
  • values (List) – A list instance of mixed type values

  • var (XmlVar) – The field metadata instance

  • namespace (Optional[str]) – The class namespace

Yields:

An iterator of sax events.

Return type:

Iterator[Union[Tuple[Literal['start'], str], Tuple[Literal['attr'], str, Any], Tuple[Literal['data'], str], Tuple[Literal['end'], str]]]

write_any_type(value, var, namespace)[source]#

Convert a value assigned to a xs:anyType field to sax events.

Parameters:
  • value (Any) – A list instance of mixed type values

  • var (XmlVar) – The field metadata instance

  • namespace (Optional[str]) – The class namespace

Yields:

An iterator of sax events.

Return type:

Iterator[Union[Tuple[Literal['start'], str], Tuple[Literal['attr'], str, Any], Tuple[Literal['data'], str], Tuple[Literal['end'], str]]]

write_derived_element(value, namespace)[source]#

Convert a derived element instance to sax events.

Parameters:
  • value (Any) – A list instance of mixed type values

  • namespace (Optional[str]) – The class namespace

Yields:

An iterator of sax events.

Return type:

Iterator[Union[Tuple[Literal['start'], str], Tuple[Literal['attr'], str, Any], Tuple[Literal['data'], str], Tuple[Literal['end'], str]]]

write_any_element(value, var, namespace)[source]#

Convert a generic any element instance to sax events.

Parameters:
  • value (Any) – A list instance of mixed type values

  • var (XmlVar) – The field metadata instance

  • namespace (Optional[str]) – The class namespace

Yields:

An iterator of sax events.

Return type:

Iterator[Union[Tuple[Literal['start'], str], Tuple[Literal['attr'], str, Any], Tuple[Literal['data'], str], Tuple[Literal['end'], str]]]

xsi_type(var, value, namespace)[source]#

Return the xsi:type for the given value and field metadata instance.

If the value type is either a child or parent for one of the var types, we need to declare it as n xsi:type.

Parameters:
  • value (Any) – A list instance of mixed type values

  • var (XmlVar) – The field metadata instance

  • namespace (Optional[str]) – The class namespace

Raises:

SerializerError – If the value type is completely unrelated to the field types.

Return type:

Optional[str]

write_elements(value, var, namespace)[source]#

Convert the value assigned to a compound field to sax events.

Parameters:
  • value (Any) – A list instance of mixed type values

  • var (XmlVar) – The field metadata instance

  • namespace (Optional[str]) – The class namespace

Yields:

An iterator of sax events.

Return type:

Iterator[Union[Tuple[Literal['start'], str], Tuple[Literal['attr'], str, Any], Tuple[Literal['data'], str], Tuple[Literal['end'], str]]]

write_choice(value, var, namespace)[source]#

Convert a single value assigned to a compound field to sax events.

Parameters:
  • value (Any) – A list instance of mixed type values

  • var (XmlVar) – The field metadata instance

  • namespace (Optional[str]) – The class namespace

Yields:

An iterator of sax events.

Raises:

SerializerError – If the value doesn’t match any choice field.

Return type:

Iterator[Union[Tuple[Literal['start'], str], Tuple[Literal['attr'], str, Any], Tuple[Literal['data'], str], Tuple[Literal['end'], str]]]

write_element(value, var, namespace)[source]#

Convert a value assigned to an element field to sax events.

Parameters:
  • value (Any) – A list instance of mixed type values

  • var (XmlVar) – The field metadata instance

  • namespace (Optional[str]) – The class namespace (unused)

Yields:

An iterator of sax events.

Return type:

Iterator[Union[Tuple[Literal['start'], str], Tuple[Literal['attr'], str, Any], Tuple[Literal['data'], str], Tuple[Literal['end'], str]]]

classmethod write_data(value, var)[source]#

Convert a value assigned to a text field to sax events.

Parameters:
  • value (Any) – A list instance of mixed type values

  • var (XmlVar) – The field metadata instance

Yields:

An iterator of sax events.

Return type:

Iterator[Union[Tuple[Literal['start'], str], Tuple[Literal['attr'], str, Any], Tuple[Literal['data'], str], Tuple[Literal['end'], str]]]

classmethod next_value(obj, meta)[source]#

Produce the next non attribute value of a model instance to convert.

The generator will produce the values in the order the fields are defined in the model or by their sequence number.

Sequential fields need to be rendered together in parallel order eg: <a1/><a2/><a1/><a/2></a1>

Parameters:
  • obj (Any) – The input model instance

  • meta (XmlMeta) – The model metadata instance

Yields:

An iterator of field metadata instance and value tuples.

Return type:

Iterator[Tuple[XmlVar, Any]]

classmethod next_attribute(obj, meta, nillable, xsi_type, ignore_optionals)[source]#

Produce the next attribute value to convert.

Parameters:
  • obj (Any) – The input model instance

  • meta (XmlMeta) – The model metadata instance

  • nillable (bool) – Specifies if the current element supports nillable content

  • xsi_type (Optional[str]) – The real xsi:type of the object

  • ignore_optionals (bool) – Specifies if optional attributes with default values should be ignored.

Yields:

An iterator of attribute name-value pairs.

Return type:

Iterator[Tuple[str, Any]]

classmethod encode(value, var)[source]#

Encode a value for xml serialization.

Converts values to strings. QName instances is an exception, those values need to wait until the XmlWriter assigns prefixes to namespaces per element node. Enums and Tokens may contain QName(s) so they also get a special treatment.

We can’t do all the conversions in the writer because we would need to carry the xml vars inside the writer. Instead of that we do the easy encoding here and leave the qualified names for later.

Parameters:
  • value (Any) – The simple type vale to encode

  • var (XmlVar) – The field metadata instance

Return type:

Any

Returns:

The encoded value.

classmethod real_xsi_type(qname, target_qname)[source]#

Compare the qname with the target qname and return the real xsi:type.

Parameters:
  • qname (str) – The field type qualified name

  • target_qname (Optional[str]) – The value type qualified name

Return type:

Optional[str]

Returns:

None if the qname and target qname match, otherwise return the target qname.

__eq__(other)#

Return self==value.

__hash__ = None#