Вероятно, вам следует начать с рассмотрения того, как шаблон проектирования состояний может вам помочь.
У вас есть две вещи, которые вам нужны
Если ваши экземпляры состояний предварительно созданы.
Внутреннее представление тех состояний, в которые вы можете десериализовать XML.Это будет серия классов, представляющих структуру XML.
Поскольку каждое состояние, похоже, имеет идентификатор, и вы используете этот идентификатор для перехода в целевое состояние, вы можете сохранить состояниеобъекты (это из пункта 1) в словаре, где ключ - это идентификатор, а значение - это объект состояния.Когда вы выполняете переход, вы просто просматриваете целевое состояние в словаре и получаете оттуда экземпляр.
Если экземпляры состояния создаются по требованию
Словарь будет содержать метаданные для каждого состояния (это может быть XML или оптимизированный формат, который гидратируется из исходного XML), затем, когда требуется переход состояния, вы ищитесостояние в словаре и динамическое создание экземпляра состояния из метаданных, связанных с идентификатором состояния.