В pydantic-xml есть возможность управлять порядком атрибутов и подэлементов при сериализации XML-документов. Для установки правильного порядка вы можете использовать атрибуты __root__
и __xml__
в модельных классах, которые вы определяете с помощью pydantic.
__root__
позволяет указать порядок подэлементов, а __xml__
- порядок атрибутов. Оба атрибута должны быть списками и содержать имена полей или имена атрибутов в нужном порядке.
Рассмотрим пример. Допустим, у вас есть класс Person
с полями name
, age
и gender
. Чтобы указать правильный порядок подэлементов, вы можете добавить __root__
:
from pydantic import BaseModel class Person(BaseModel): name: str age: int gender: str __root__ = ['name', 'age', 'gender']
Теперь, при сериализации экземпляра класса Person
, подэлементы будут отображаться в порядке, указанном в __root__
.
person = Person(name="John", age=30, gender="Male") xml = person.xml() # Сериализация в XML print(xml)
Вывод:
<Person> <name>John</name> <age>30</age> <gender>Male</gender> </Person>
Аналогичным образом можно установить правильный порядок атрибутов, используя атрибут __xml__
. Например, если у вас есть класс Book
с атрибутами title
, author
и year
, вы можете указать порядок атрибутов следующим образом:
from pydantic import BaseModel class Book(BaseModel): title: str author: str year: int __xml__ = ['title', 'author', 'year']
Теперь, атрибуты будут отображаться в XML-элементе в указанном порядке:
book = Book(title="Python in Action", author="John Smith", year=2022) xml = book.xml() # Сериализация в XML print(xml)
Вывод:
<Book title="Python in Action" author="John Smith" year="2022"/>
Таким образом, использование атрибутов __root__
и __xml__
в моделях классов pydantic позволяет контролировать порядок подэлементов и атрибутов при сериализации в XML.