Инструмент определения схемы XML (Xsd.exe)

Инструмент определения схемы XML (Xsd.exe) создает схему XML или классы CLR из файлов XDR, XML и XSD либо из классов в сборке среды выполнения.

xsd file.xdr [/outputdir:directory][/parameters:file.xml]
xsd file.xml [/outputdir:directory] [/parameters:file.xml]
xsd file.xsd {/classes | /dataset} [/element:element] 
             [/enableLinqDataSet] [/language:language] 
                          [/namespace:namespace] [/outputdir:directory] [URI:uri] 
                          [/parameters:file.xml]
xsd {file.dll | file.exe} [/outputdir:directory] [/type:typename [...]][/parameters:file.xml]

Аргумент

Аргумент Описание

file.extension

Задает входной файл, который необходимо преобразовать. Следует указать одно из следующих расширений : XDR, XML, XSD, DLL или EXE.

Если указать файл схемы XDR (расширение XDR), Xsd.exe преобразует схему XDR в схему XSD. Имя выходного файла аналогично имени схемы XDR, но имеет расширение XSD.

Если указать XML-файл (расширение XML), Xsd.exe определяет схему по данным в файле и создает схему XSD. Имя выходного файла аналогично имени XML-файла, но имеет расширение XSD.

Если указать файл схемы XML (расширение XSD), Xsd.exe создает исходный код для объектов среды выполнения, соответствующих схеме XML.

Если указать файл сборки среды выполнения (расширение EXE или DLL), Xsd.exe создает схемы для одного или нескольких типов в этой сборке. Чтобы указать типы, для которых необходимо создать схемы, можно использовать параметр /type. Выходным схемам присваиваются имена schema0.xsd, schema1.xsd и т. д. Xsd.exe создает несколько схем, только если указанные типы задают пространство имен с использованием настраиваемого атрибута XMLRoot.

Общие параметры

Параметр Описание

/h[elp]

Отображает синтаксис команд и параметров инструмента.

/o[utputdir]:directory

Задает каталог выходных файлов. Этот аргумент отображается только один раз. Значением по умолчанию является текущий каталог.

/?

Отображает синтаксис команд и параметров инструмента.

/P[arameters]:file.xml

Считывает параметры различных режимов операций из указанного XML-файла. Краткая форма "/p:". Дополнительные сведения см. в разделе "Примечания".

Параметры файла XSD

Для файлов XSD следует указать только один из следующих параметров.

Параметр Описание

/c[lasses]

Создает классы, соответствующие указанной схеме. Чтобы считать данные XML в объект, используйте метод System.Xml.Serialization.XmlSerializer.Deserializer.

/d[ataset]

Создает классы, которые являются производными класса DataSet и соответствуют указанной схеме. Чтобы считать данные XML в производный класс, используйте метод System.Data.DataSet.ReadXml.

Для файлов XSD также можно указать любой из следующих параметров.

Параметр Описание

/e[lement]:element

Определяет элемент в схеме, для которого создается код. По умолчанию все элементы имеют тип. Этот аргумент можно задать несколько раз.

/enableDataBinding

Реализует интерфейс INotifyPropertyChanged для всех созданных типов для обеспечения привязки данных. Краткая форма — "/edb".

/enableLinqDataSet

(Краткая форма: /eld.) Указывает, что созданный набор данных можно запросить с помощью LINQ to DataSet. Этот параметр используется только при указании параметра /dataset. Дополнительные сведения см. в разделах LINQ to DataSet Overview и Querying Typed DataSets. Общие сведения об использовании LINQ см. в разделе Language-Integrated Query (LINQ).

/f[ields]

Создает поля вместо свойств. По умолчанию создаются свойства.

/l[anguage]:language

Задает используемый язык программирования. Доступный выбор: CS (C#, по умолчанию), VB (Visual Basic), JS (JScript) или VJS (Visual J#). Также можно указать полное имя класса, реализующего System.CodeDom.Compiler.CodeDomProvider

/n[amespace]:namespace

Определяет пространство имен среды выполнения для создаваемых типов. Пространство имен по умолчанию — Schemas.

/nologo

Отключает баннер.

/order

Создает явные идентификаторы порядка для всех примитивных членов.

/o[ut]:directoryName

Задает выходной каталог, в котором следует размещать файлы. По умолчанию используется текущий каталог.

/u[ri]:uri

Определяет универсальный код ресурса (URI) для элементов схемы, для которого создается код. Этот универсальный код ресурса, если имеется, применяется ко всем элементам, заданным параметром /element.

Параметры файлов DLL и EXE

Параметр Описание

/t[ype]:typename

Задает имя типа, для которого следует создать схему. Можно указать несколько аргументов типа. Если typename не указывает пространство имен, Xsd.exe сопоставляет все типы в сборке с указанным типом. Если typename задает пространство имен, сопоставляется только этот тип. Если typename заканчивается знаком звездочки (*), инструмент сопоставляет все типы, которые начинаются со строки, предшествующей знаку звездочки (*). Если параметр /type не задан, Xsd.exe создает схемы для всех типов в сборке.

Замечания

В следующей таблице показаны операции, выполняемые Xsd.exe.

  • XDR в XSD
    Создает схему XML из файла схемы XDR. XDR является более ранним форматом схемы, основанной на XML.
  • XML в XSD
    Создает схему XML из XML-файла.
  • XSD в DataSet
    Создает классы CLR DataSet из файла схемы XSD. Создаваемые классы представляют собой объектную модель с широкими функциональными возможностями для обычных данных XML.
  • XSD в классы
    Создает классы среды выполнения из файла схемы XSD. Созданные классы можно использовать совместно с System.Xml.Serialization.XmlSerializer для чтения и записи кода XML, соответствующего схеме.
  • Классы в XSD
    Создает схему XML из типа или типов в файле сборки среды выполнения. Созданная схема определяет формат XML, используемый System.Xml.Serialization.XmlSerializer.

Xsd.exe позволяет управлять только схемами XML, которые соответствуют языку определения схемы XML (XSD), предложенному консорциумом World Wide Web Consortium (W3C). Дополнительные сведения о предложенном определении схемы XML или стандарте XML см. на веб-сайте http://w3.org.

Установка параметров с помощью XML-файла

С помощью ключа /parameters можно задать один XML-файл, который содержит различные параметры. Задаваемые параметры зависят от способа использования инструмента XSD.exe. Варианты включают в себя создание схем, файлов кода или создание файлов кода, содержащих функции DataSet. Например, можно задать элемент <assembly> как имя исполняемого файла (расширение EXE) или файла библиотеки типов (расширение DLL) при создании схемы, но не при создании файла кода. В следующем примере XML показано, как использовать элемент <generateSchemas> с указанным исполняемым файлом:

<!-- This is in a file named GenerateSchemas.xml. -->
<xsd xmlns='https://microsoft.com/dotnet/tools/xsd/'>
<generateSchemas>
   <assembly>ConsoleApplication1.exe</assembly>
</generateSchemas>
</xsd>

Если предыдущий XML содержится в файле с именем "GenerateSchemas.xml", используйте ключ /parameters, введя следующий текст в командной строке и нажав клавишу ENTER:

xsd /p:GenerateSchemas.xml

С другой стороны, при создании схемы для одного типа, найденного в сборке, можно использовать следующий XML:

<!-- This is in a file named GenerateSchemaFromType.xml. -->
<xsd xmlns='https://microsoft.com/dotnet/tools/xsd/'>
<generateSchemas>
   <type>IDItems</type>
</generateSchemas>
</xsd>

Но чтобы использовать предыдущий код, в командной строке следует также указать имя сборки. В командной строке введите следующую команду (допустим, имя XML-файла — GenerateSchemaFromType.xml):

xsd /p:GenerateSchemaFromType.xml ConsoleApplication1.exe

Для элемента <generateSchemas> следует указать только один из следующих параметров.

Элемент Описание

<assembly>

Определяет сборку, из которой создается схема.

<type>

Определяет тип, найденный в сборке, для которого создается схема.

<xml>

Задает XML-файл, для которого создается схема.

<xdr>

Определяет XDR-файл, для которого создается схема.

Чтобы создать файл кода, используйте элемент <generateClasses>. В следующем примере создается файл кода. Обратите внимание, что также отображаются два атрибута, с помощью которых можно задать язык программирования и пространство имен создаваемого файла.

<xsd xmlns='https://microsoft.com/dotnet/tools/xsd/'>
<generateClasses language='VB' namespace='Microsoft.Serialization.Examples'/>
</xsd>
<!-- You must supply an .xsd file when typing in the command line.-->
<!-- For example: xsd /p:genClasses mySchema.xsd -->

Параметры, которые можно задать для элемента <generateClasses>, включают в себя следующие.

Элемент Описание

<element>

Определяет элемент в файле XSD, для которого создается код.

<schemaImporterExtensions>

Определяет тип, унаследованный от класса SchemaImporterExtension.

<schema>

Определяет файл схемы XML, для которой создается код. С помощью нескольких элементов <schema> можно задать несколько файлов схемы XML.

В следующей таблице представлены атрибуты, которые также можно использовать с элементом <generateClasses>.

Атрибут Описание

language

Задает используемый язык программирования. Доступный выбор: CS (C#, по умолчанию), VB (Visual Basic), JS (JScript) или VJS (Visual J#). Также можно указать полное имя класса, реализующего CodeDomProvider.

namespace

Задает пространство имен созданного кода. Пространство имен должно соответствовать стандартам CLR (например, отсутствие пробелов или обратной косой черты).

options

Одно из следующих значений: none, properties (создает свойства вместо открытых полей), order или enableDataBinding (см. ключи /order и/enableDataBinding в предыдущем разделе параметров файла XSD).

Также предусмотрена возможность управления созданием кода DataSet с использованием элемента <generateDataSets>. Следующий XML-код указывает, что созданный код использует структуры DataSet (например, класс DataTable) для создания кода Visual Basic для указанного элемента. Созданные структуры DataSet поддерживают запросы LINQ.

<xsd xmlns='https://microsoft.com/dotnet/tools/xsd/'>

<generateDataSet language='VB' namespace='Microsoft.Serialization.Examples' enableLinqDataSet='true'>

</generateDataSet>

</xsd>

Параметры, которые можно задать для элемента <generateDataSet>, включают в себя следующие.

Элемент Описание

<schema>

Определяет файл схемы XML, для которой создается код. С помощью нескольких элементов <schema> можно задать несколько файлов схемы XML.

В следующей таблице представлены атрибуты, которые можно использовать с элементом <generateDataSet>.

Атрибут Описание

enableLinqDataSet

Указывает, что созданный набор данных можно запросить с помощью LINQ to DataSet. Значение по умолчанию — false.

language

Задает используемый язык программирования. Доступный выбор: CS (C#, по умолчанию), VB (Visual Basic), JS (JScript) или VJS (Visual J#). Также можно указать полное имя класса, реализующего CodeDomProvider.

namespace

Задает пространство имен созданного кода. Пространство имен должно соответствовать стандартам CLR (например, отсутствие пробелов или обратной косой черты).

Существуют атрибуты, которые можно задать для элемента верхнего уровня <xsd>. Эти параметры можно использовать с любым из дочерних элементов (<generateSchemas>, <generateClasses> или <generateDataSet>). Следующий код XML создает код для элемента с именем "IDItems" в выходном каталоге с именем "MyOutputDirectory".

<xsd xmlns='https://microsoft.com/dotnet/tools/xsd/' output='MyOutputDirectory'>
<generateClasses>
<element>IDItems</element>
</generateClasses>
</xsd>

В следующей таблице представлены атрибуты, которые также можно использовать с элементом <xsd>.

Атрибут Описание

output

Имя каталога, в который сохраняется созданная схема или файл кода.

nologo

Отключает баннер. Задайте true или false.

help

Отображает синтаксис команд и параметров инструмента. Задайте true или false.

Примеры

Следующая команда создает схему XML из myFile.xdr и сохраняет ее в текущий каталог.

xsd myFile.xdr 

Следующая команда создает схему XML из myFile.xml и сохраняет ее в указанный каталог.

xsd myFile.xml /outputdir:myOutputDir

Следующая команда создает набор данных, соответствующий определенной схеме на языке C# и сохраняет его как XSDSchemaFile.cs в текущий каталог.

xsd /dataset /language:CS XSDSchemaFile.xsd

Следующая команда создает схемы XML для всех типов в сборке myAssembly.dll и сохраняет их как schema0.xsd в текущий каталог.

xsd myAssembly.dll  

См. также

Справочник

System.Xml.Serialization.XmlSerializer.Deserializer
DataSet
System.Xml.Serialization.XmlSerializer

Другие ресурсы

.NET Framework Tools
SDK Command Prompt
LINQ to DataSet Overview
Querying Typed DataSets
Language-Integrated Query (LINQ)

Дата сборки: 2010-03-10