class HabraSchema(XMLSchema): title = fields.Str(required=True) link = fields.Str(required=True) description = fields.Str() user = fields.Str(required=True, data_key='dc:creator', attribute='name') dt = fields.DateTime(required=True, format='%a, %d %b %Y %H:%M:%S %Z', data_key='pubDate', attribute='dt_create') category = fields.List(fields.Str(), attribute='tags', missing=[])
class RedditSchema(XMLSchema): title = fields.Str(required=True) author = fields.Nested(RedditSchemaAuthor, required=True) link = fields.Nested(RedditSchemaLink, required=True) description = fields.Nested(RedditSchemaContent, data_key='content') updated = fields.DateTime(required=True, attribute='dt_create') category = fields.XMLNested(RedditSchemaCategory, attribute='tags', many=True) @post_load def prepare_data(self, data: Dict[str, Any]) -> Dict[str, Any]: tags = data.get('tags') if tags: tag_list = [] for tag in tags: tag_list.append(tag['cat']) data['tags'] = tag_list return data
class ComplicatedXMLNested2(JSONSchema): z1 = fields.Str(required=True, attribute='result_field4', data_key='Q') z2 = fields.XMLNested(ComplicatedXMLNested3, attribute='result_field5', data_key='ddd')
class RedditSchemaLink(XMLSchema): href = fields.Str(required=True, data_key='@href')
class RedditSchemaAuthor(XMLSchema): name = fields.Str(required=True)
class RedditSchemaCategory(XMLSchema): cat = fields.Str(required=True, data_key='@term')
class RedditSchemaContent(XMLSchema): data = fields.Str(required=True, data_key='#text')