Есть ли механизм преобразования или библиотека, использующая.NET?

Мы ищем библиотеку или механизм Transformation, которые могут читать любые входные данные (файлы EDIfact, CSV, XML и т. П.). Таким образом, файлы (или результаты веб-сервисов), которые содержат данные, которые должны быть преобразованы в известную структуру бизнес-объекта.) данные должны быть преобразованы в существующий бизнес-объект с использованием пользовательских правил. XSLT является сложным (для изучения) и простым (недостаточно функций)

Кто-нибудь может порекомендовать библиотеку C# или движок? Я видел Altova MapForce, но хотел бы кое-что, что я могу разослать десяткам людей, которые будут строить / проектировать свои собственные преобразования без необходимости платить десятки лицензий Altova.

5 ответов

Решение

Если вы думаете, что XSLT слишком сложен для вас, я думаю, вы можете попробовать LINQ to XML для анализа файлов XML. Он интегрирован в.NET Framework, и вы можете использовать C# (или, если вы используете VB.NET 9.0, лучше из-за литералов XML) вместо изучения другого языка. Вы можете интегрировать его с существующим приложением без особых усилий и без несоответствия парадигмы между языком и управлением файлами, которое происходит с XSLT.

Microsoft LINQ to XML

Конечно, это не фреймворк или библиотека для разбора файлов, но не XSLT, так что...

XSLT не будет работать для EDI и CSV. Если вам нужен полностью общий механизм трансформации, вам, возможно, придется раскошелиться. Я использовал Symphonia для работы с EDI, и это работало, но это не бесплатно.

Проблема в том, что вы описываете звуки "предприимчивые" (я уверен, что никто не использует EDI для развлечения), поэтому нет никаких открытых / бесплатных инструментов для работы с этим материалом.

Я бы не поспешил отклонить XSLT как слишком сложный или не содержащий необходимых вам функций.

Существует множество книг / сайтов, которые описывают все, что вам нужно знать о XSLT. Да, есть некоторая кривая обучения, но это не займет много времени, и всегда есть большое сообщество, к которому можно обратиться, например, через stackru, если вам нужна помощь;-)

Что касается отсутствия функций, вы всегда можете расширить xslt и вызывать сборки.NET из xslt, используя метод XsltArgumentList.AddExtensionObject(), который даст вам необходимую мощность.

MSDN имеет отличный пример использования этого здесь

Это правда, что приложения MapForce и Biztalk делают создание xslt очень простым, но они также стоят немного дороже. Кроме того, в зависимости от вашей пользовательской базы (если не для разработчиков), я думаю, вы обнаружите, что эти приложения имеют свои собственные кривые обучения и часто слишком многофункциональны для того, что вам нужно.

Я бы порекомендовал вам подумать о создании и распространении своего собственного инструмента отображения, соответствующего вашим потребностям.

Также, если вам нужна библиотека для помощи в преобразовании файлов, я бы порекомендовал FileHelpers на SourceForge.

У DataDirect Technologies есть продукт, который делает именно это. На http://www.xmlconverters.com/ есть библиотека под названием XmlConverters, которая преобразует EDI в XML и наоборот. Есть также конвертеры для CSV, JSON и других форматов. Библиотеки доступны в виде 100% -ного управляемого кода.net и параллельного порта в 100% -ной Java. Сторона.net поддерживает XmlReader и XmlWriter, а сторона Java поддерживает SAX, StAX и DOM. Оба также поддерживают потоковый ввод и вывод для чтения / записи. DataDirect также имеет механизм XQuery, оптимизированный для объединения реляционных данных с EDI и XML, но это только Java.

Microsoft BizTalk Server отлично справляется с этой задачей.

Другие вопросы по тегам