2012-02-28 6 views
0

Я хочу экспортировать объекты в XML и создавать XSD. Ниже приведены базовые классыСоздать XSD для иерархических данных

class Owner 
{ 
    private int id; 
    private string name; 
    private List<Car> cars; 
    private int age; 
} 

class CarTemplate 
{ 
    private int drive; 
    private double engineCc; 
} 

class Car 
{ 
    private int id; 
    private string name; 
    private double cost; 
    private CarTemplate template; 
} 

Ниже приводится модифицированная структура, которую я хочу экспортировать в XML и создавать XSD из него

class ExportedOwner 
{ 
    private int id; 
    private string name; 
    private List<Car> cars; 
} 

class ExportedCar 
{ 
    private string name; 
    private double cost; 
    private CarTemplate template; 
} 

Структура XML должен быть в следующем формате

<?xml version="1.0" encoding="utf-8" ?> 
<Owner> 
    <id>1</id> 
    <Name>John</Name> 
    <Age>49</Age> 
    <Cars> 
     <Car> 
      <id>1</id> 
      <Name>Merc Class C</Name> 
      <CarTemplate> 
       <drive>2</drive> 
       <engineCc>2500</engineCc> 
      </CarTemplate> 
     </Car> 
     <Car> 
      <id>2</id> 
      <Name>Merc Class M</Name> 
      <CarTemplate> 
       <drive>4</drive> 
       <engineCc>2900</engineCc> 
      </CarTemplate> 
     </Car> 
    </Cars> 
</Owner> 

Как создать XSD для формата XML. Я хочу, чтобы XSD импортировал XML-файл обратно в приложение.

ответ

0

Там в 2 различных вопросов, чтобы ответить здесь ...

Во-первых, как экспортировать объекты в файл XML. В .NET есть много способов сделать это. Два наиболее распространенных (XmlSerializer и DataContractSerializer) сравниваются бок о бок в этом blog post.

Вторая часть вашего вопроса немного шире. Генерация xsd-схемы из существующего XML-файла не является точной наукой, но есть инструменты, которые могут вывести (или угадать) схему из файла XML. Существуют различные инструменты, которые могут сделать это для вас - возможно, стоит попробовать несколько из них и посмотреть, какой из них дает вам наилучшие результаты. Как всегда, google is your good friend :)

0

Если вы хотите, чтобы сгенерировать XML из ваших классов динамически, вы можете использовать System.Reflection

Например:

Type type = typeof(ExportedOwner); 

var propertyinfos = type.GetProperties(); // gives you a list of all properties of ExportedOwner 

А затем сгенерировать XML согласно вашей спецификации с вашей любимой Xml Writer.

+0

Xsd2Code генерирует файлы cs/vb из xsd-схем, а не наоборот .. – MattDavey

+0

Hm, true - я, должно быть, путал инструмент с другим плагином, который использовал. Странно - мог бы поклясться, что это называется так. – Alex

+0

Я думаю, вы имеете в виду xsd.exe :) – MattDavey

Смежные вопросы