Генерация XSD для сериализованного XML - PullRequest
0 голосов
/ 09 июня 2009

В настоящее время у меня есть XML-файл, который выглядит следующим образом ...


<ArrayOfService>
    <Service>
        <Name>
            Something
        </Name>
        <Id>
            8003
        </Id>
    </Service>
</ArrayOfService>

Это автоматически генерируется из класса, который выглядит следующим образом ...


public class Service{
    public string Name;
    public int Id;

    public Service(){
    }
}

Чтобы превратить класс в XML, я использую ...


XmlSerializer xs = new XmlSerializer( typeof(Service) );
xs.Serialize( context.Response.OutputStream, FunctionReturnsTypeService() );

Есть ли способ автоматически сгенерировать XSD, подобный этому?

EDIT:

Кроме того, есть ли способ добавить эту схему в XML, поскольку я ее сериализую?

1 Ответ

2 голосов
/ 09 июня 2009

Инструмент xsd.exe (% netsdk20% \ bin \ xsd.exe) выводит тип из документа XML.

(Вы также можете использовать параметр / c для генерации классов из документа или схемы xml.)

Если вы хотите встроить ссылку на схему в документ XML, см. Здесь: http://www.tech -archive.net / Архив / DotNet / microsoft.public.dotnet.xml / 2006-12 / msg00040.html

Резюме:
украсьте член вашего типа атрибутом XmlAttribute, указав "schemaLocation" в качестве имени атрибута и "http://www.w3.org/2001/XMLSchema-instance" в качестве пространства имен для этого атрибута. Как в этом примере в C #

[System.Xml.Serialization.XmlAttributeAttribute("schemaLocation",
    Namespace = System.Xml.Schema.XmlSchema.InstanceNamespace)]
private string xsiSchemaLocation = "YourSchema.xsd"; 
...