Предлагаемый вами подход, при котором вы выполняете преобразование, а затем используете сборку .NET для замены идентификаторов описаниями, должен работать для сравнительно небольших сообщений, но у вас будут проблемы с сообщениями большего размера.
Другой вариант - создать сообщение, состоящее из нескольких частей, которое содержит ваш оригинальный тип и новый тип. Новый тип - это тот, который вы создаете и загружаете парами имя-значение перед преобразованием. Теперь у вас есть два сообщения - Y (ваше сообщение) и X (сообщение, содержащее пары имя-значение).
Возьмите копию существующей карты на случай, если она сломается, затем измените форму преобразования так, чтобы она принимала оба типа (тип Y и тип X) - порядок не важен.
На вашей карте - там, где вам нужно выполнить поиск, добавьте функтоид сценариев и установите для него значение Inline XSLT .
Во встроенном XSLT добавьте имя вашего узла, а затем элемент xsl: value-of select ... . Поместите выражение xpath в оператор выбора, который ищет идентификатор и выбирает значение. Простое выражение может быть что-то вроде / Root / Lookups [@ id = "12345"] / - но, конечно, ваше выражение будет другим. Вы можете получить представление о том, как обращаться к части сообщения, щелкнув узел, содержащий пары имя-значение, и выберите Экземпляр XPath в полях свойств.
Потребуется некоторая практика, если вы не знакомы с XPath или пространствами имен и т. Д. - но когда он работает, он будет быстрым и будет работать бесперебойно, и у вас будет меньше кода для обслуживания.