Создать XSD для иерархических данных - PullRequest
0 голосов
/ 28 февраля 2012

Я хочу экспортировать объекты в XML и создать 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 обратно в приложение.

Ответы [ 4 ]

1 голос
/ 28 февраля 2012

Используйте XSD.EXE для генерации XSD: это стандартный инструмент .NET Framework. См. http://msdn.microsoft.com/en-us/library/x6c1kb0s(v=vs.110).aspx, чтобы увидеть, как оно используется.

0 голосов
/ 28 февраля 2012

Здесь есть два разных вопроса, на которые нужно ответить ...

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

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

0 голосов
/ 28 февраля 2012

Для этого вы можете использовать стандартный XML-сериализатор (с xsd.exe). Вам потребуется использовать KnownTypeAttribute в базовом классе, чтобы десериализованный пользователь знал, как повторно увлажнить структуру.

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.knowntypeattribute.aspx

0 голосов
/ 28 февраля 2012

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

Например:

Type type = typeof(ExportedOwner);

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

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

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