Идеи многоразового кодирования для анализа нескольких типов основных данных

Я читаю некоторые основные данные из стороннего бухгалтерского приложения, которое возвращает XML. Мое приложение отправляет запрос на порт, который прослушивает стороннее приложение, и получает ответ в виде XML. Существуют различные типы основных данных, которые я читаю, например, Employee, BankAccount и т. д. Существует 20-30 различных типов основных данных.

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

Мне нужно разработать класс .NET для каждого типа мастера, а затем написать методы синтаксического анализа для анализа ответов XML и заполнения объектов .NET. Поскольку есть 20-30 типов мастеров, каждый из которых имеет свой набор полей, это выглядит слишком много работы для такого стандартного типа кода.

Любые идеи, как я могу уменьшить свои усилия по кодированию, сохраняя при этом преимущества объектно-ориентированного программирования и проверки времени компиляции, функций Intellisense и т. д.?

Вы можете предположить, что XML следует определенному шаблону, например: ...

Как код узнает, какой XML-тег нужно преобразовать в метод или свойство объекта C#? Обратите внимание, что я не ищу генераторы кода. Я хочу, чтобы на основе возвращенного XML код разумно определял, какие поля должны быть заполнены, как нет. Количество полей, возвращаемых в ответе XML, может различаться, и в будущих версиях стороннего бухгалтерского приложения могут появиться новые поля.

Может быть, это невозможно, чего я пытаюсь достичь?

РЕДАКТИРОВАТЬ 1: Может быть любая внешняя информация о сопоставлении (или может быть как встроенный ресурс) - какой тег XML должен быть заполнен в какое свойство класса... Но как это реализовать?


person AllSolutions    schedule 28.01.2014    source источник
comment
Всем привет. Я думаю, что programming.stackoverflow.com, вероятно, является лучшим местом для такого типа вопросов.   -  person Adam Modlin    schedule 28.01.2014
comment
Знаете ли вы, какой тип объекта должен быть в файле, не открывая его, чтобы увидеть? Как часто меняется xml и нужно ли вам работать с несколькими версиями объекта одновременно. Сериализация может быть вариантом, но я был бы осторожен, учитывая, что это третья сторона. LinqToXml был бы моей первой мыслью.   -  person Tony Hopkinson    schedule 28.01.2014
comment
Это не сложно, просто много работы осла. :(   -  person Tony Hopkinson    schedule 28.01.2014
comment
Именно, как я могу избежать такой работы осла и использовать свое время кодирования более продуктивно.   -  person AllSolutions    schedule 28.01.2014
comment
В зависимости от ваших требований (в частности, нужно ли вам на самом деле создавать полные классы из данных), вы можете использовать LINQ to XML. Это дает вам простой способ напрямую запрашивать XML, как если бы это была база данных, без необходимости создавать промежуточные представления объектов.   -  person Dan Bryant    schedule 28.01.2014
comment
Но LINQ может не дать мне проверку времени компиляции и функцию IntelliSense.   -  person AllSolutions    schedule 28.01.2014
comment
Я отредактировал ваш заголовок. См. Должны ли вопросы включать «теги» в свои заголовки?, если нет единого мнения, не следует.   -  person John Saunders    schedule 28.01.2014


Ответы (1)


Это не полный ответ, но XSD.EXE можно использовать для создания классов С# из файлов XML. Для получения дополнительной информации см. эту ссылку .

person Sylvain Rodrigue    schedule 28.01.2014