Создать класс из XML - PullRequest
       5

Создать класс из XML

1 голос
/ 03 ноября 2011

В начале я хочу подтвердить, что я новичок в C #.У меня просто есть некоторый опыт программирования AVR ANSI C.

У меня есть упражнение (крайний срок: апрель 2012).Это не моя домашняя работа, это единственный способ показать моему другу и учителю, что я могу это сделать.Давайте представим идею упражнения:

Заголовок: Генератор классов WinForm Подробно: мне нужно создать приложение (на основе System.Reflection), которое будет создавать исходный код (класс) в c #.Это приложение позволит пользователю добавить случайный XML-файл и преобразовать его в класс C #.В конечном итоге пользователь сможет сохранить его где-нибудь.

Я уже сделал часть кода (в MS Visual Studio C #), которая позволяет пользователю выбирать и сохранять файл.

Я думаю, что это должно работать так: Пример XML (я знаю, что этот пример может быть написан неправильно - но я не знаю XML)

<pizza>
  <vezuvio>
     <prize> 10 </prize>
  </vezuvio>
</pizza>

Конвертер в c #

class Pizza{
  contruct vesuvio{
    int prize = 10;
  }
} 

Какая помощь мне нужна от ваших пользователей:

  1. Полезные ссылки о том же проекте / приложении - я искал на этом сайте, но не смог найти что-то интересное.
  2. Любые идеи или плохой исходный код, чтобы показать, в основном, как он должен работать.
  3. Что такое десериализация и будет ли она полезной?

Ответы [ 4 ]

3 голосов
/ 03 ноября 2011

Запись отображения общего назначения из xml в C # является ... сложной и может действительно быть невозможной во многих случаях.Однако, как показывают такие инструменты, как xsd, можно вывести схему из xml.Однако, как гораздо более простой вариант, вы можете просто посмотреть на синтаксический анализ xml с помощью xslt, который может просто проверять наличие аналогичных элементов (чтобы определить, является ли что-то отдельным или списком, и т. Д.). ЕСЛИ вы хорошо знали c #, xml и xslt, вывести из строя что-то простое, но функционирование было бы довольно просто.

Сложность также зависит от того,Ожидается, что вы сможете заполнить объектную модель произвольными данными из той же схемы: если вы можете просто подключиться к XmlSerializer, то отлично!но написание полного механизма сериализации xml с нуля или с XmlReader (в качестве отправной точки) нетривиально.

Xml также, вероятно, намного сложнее, чем вы ожидаете - есть много тонкостей (не в последнюю очередь, xmlns пространства имен).

0 голосов
/ 29 мая 2013

Лучший инструмент для выполнения этой работы - SimpleXmlToCode

Он хорошо работает для этой работы.Не требует XSD или чего-либо еще.Прямые классы XML в POCO.

0 голосов
/ 03 ноября 2011

1) вы не получите прямую ссылку на то, что вам нужно. Поиск xml чтения узла и xml атрибута и имени узла. Xquery путь. 2) если вы сначала используете инкрементальный подход к поиску корневого узла, а затем записываете его в исходный файл и т. Д. 3) я не думаю, что поиск по XML не очень вам поможет

0 голосов
/ 03 ноября 2011

В качестве отправной точки .NET поставляется с Xsd.exe , который может генерировать класс C # из XML / XSD.Получив класс, вы можете затем десериализовать его из файла XML, чтобы прочитать данные из файла в свойствах объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...