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

StackOverflow https://stackoverflow.com/questions/62077

  •  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 делает это очень хорошо.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top