XML#
ElementTreeXmlCodec(
root_name="root",
encoding="utf-8",
)
XmlBody(
codec=...,
name="xml",
media_type="application/xml",
)
XmlResponse(codec=...)
XmlBody используется как Annotated marker. XmlResponse является primitive extractor-ом и
передаётся в Extracted(Model, using=XmlResponse(codec), media_type="application/xml").
ElementTreeXmlCodec сериализует semantic primitives из model registry и разбирает повторяющиеся
elements в lists. Scalars возвращаются как text, после чего окончательные типы строит выбранный
model adapter.
Собственный codec реализует serialize(value) -> bytes и parse(body) -> object. Ошибка decode
становится MalformedResponseError; codec не должен возвращать частичный результат.