Существует ли механизм преобразования или библиотека, использующие .NET?
-
09-06-2019 - |
Вопрос
Мы ищем библиотеку преобразований или движок, который может считывать любые входные данные (файлы EDIfact, CSV, XML и тому подобное.Итак, файлы (или результаты веб-сервисов), содержащие данные, которые должны быть преобразованы в известную структуру бизнес-объекта.) Эти данные должны быть преобразованы в существующий бизнес-объект с использованием пользовательских правил.XSLT относится как к сложным (для изучения), так и к простым (недостаточно функций)
Кто-нибудь может порекомендовать библиотеку или движок C #?Я видел Altova MapForce, но хотел бы получить что-то, что я мог бы разослать десяткам людей, которые будут создавать свои собственные преобразования без необходимости оплачивать десятки лицензий Altova.
Решение
Если вы считаете, что XSLT слишком сложен для вас, я думаю, вы можете попробовать LINQ to XML для синтаксического анализа XML-файлов.Он интегрирован в .NET framework, и вы можете использовать C # (или, если вы используете VB.NET 9.0, лучше из-за XML-литералов) вместо изучения другого языка.Вы можете интегрировать его с существующим приложением без особых усилий и без парадигмального несоответствия между языком и управлением файлами, которое происходит с XSLT.
Microsoft LINQ для преобразования в XML
Конечно, это не фреймворк или библиотека для синтаксического анализа файлов, но и XSLT таковым не является, так что...
Другие советы
XSLT не будет работать для EDI и CSV.Если вам нужен полностью универсальный механизм трансформации, возможно, вам придется выложить немного денег.Я использовал Симфония для работы с EDI, и это сработало, но это не бесплатно.
Дело в том, что проблема, которую вы описываете, звучит "предприимчиво" (я уверен, что никто не использует EDI для развлечения), поэтому нет инструментов с открытым исходным кодом / бесплатных инструментов для решения этой проблемы.
Я бы не стал так быстро отвергать XSLT как слишком сложный или не содержащий необходимых вам функций.
Существует множество книг / веб-сайтов, которые описывают все, что вам нужно знать о XSLT.Да, есть небольшая кривая обучения, но для того, чтобы вникнуть в нее, не требуется много времени, и всегда есть отличное сообщество вроде stackoverflow, к которому можно обратиться, если вам нужна помощь ;-)
Что касается отсутствия функций, вы всегда можете расширить xslt и вызвать .СЕТЕВЫЕ сборки из xslt с помощью Метод XsltArgumentList.AddExtensionObject(), который даст вам необходимую мощность.
В MSDN есть отличный пример использования этого здесь
Это правда, что приложения MapForce и Biztalk очень упрощают создание xslt, но они также стоят немного.Кроме того, в зависимости от вашей базы пользователей (предполагая, что это не разработчики), я думаю, вы обнаружите, что эти приложения имеют собственные кривые обучения и часто слишком многофункциональны для того, что вам нужно.
Я бы рекомендовал вам рассмотреть возможность создания и распространения вашего собственного инструмента отображения, адаптированного к потребностям ваших пользователей.
Кроме того, если вам нужна библиотека для помощи в преобразовании файлов, я бы рекомендовал Помощники по работе с файлами в 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 делает это очень хорошо.