Ну, сначала определите «продвинутый», то есть то, что конкретно вам нужно, что XmlSerializer
не имеет. С точки зрения POCO, XmlSerializer
имеет перегруженный ctor, который принимает все атрибуты, которые вы могли бы когда-либо добавить, чтобы избежать необходимости добавлять их в вашу объектную модель - но для этого все еще требуется открытый конструктор без параметров и работает только с открытыми полями / свойствами чтения / записи. И вам следует кэшировать / повторно использовать сериализатор, если вы используете этот подход.
Я не знаю ни о каких аналогичных альтернативах, просто потому, что в большинстве случаев это "достаточно хорошо" - и часто ошибочно пытаться грубо заставить свой существующий объект домена в DTO. Может быть проще и удобнее обслуживать простое сопоставление сущностей вашего домена с новым DTO, которому присваивается (и имеют соответствующий ctor / properties / etc).
Обратите внимание, что для проблемы ctor / properties у DataContractSerializer
есть некоторые ответы, но это не так хорошо контролирует, как выглядит xml.