2016-02-09 7 views
1

У меня есть xsd-файл и вам нужно создать xml. Некоторые страницы предполагают использовать xsd.exe из Visual Studio. Но как связать сгенерированный класс с xsd, чтобы создать из него xml-файлы?vb.net - Создать класс из XSD и сгенерировать xml

Или есть другой способ экспортировать значения через схему xsd в xml-файл?

ответ

5

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

1) Вам нужно будет создать классы .NET на основе вашего XSD.
2) Вам нужно будет создать новый экземпляр этого класса и сериализовать вывод.

Шаг 1 - Создание класса .NET из XSD документа

Файл XSD обеспечивает синюю печать для класса. Вот пример файла XSD:.

<?xml version="1.0" encoding="utf-8"?> 
    <xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="Person" nillable="true" type="Person" /> 
     <xs:complexType name="Person"> 
     <xs:sequence> 
      <xs:element minOccurs="0" maxOccurs="1" name="firstName" type="xs:string" /> 
      <xs:element minOccurs="0" maxOccurs="1" name="lastName" type="xs:string" /> 
      <xs:element minOccurs="1" maxOccurs="1" name="dateOfBirth" type="xs:dateTime" /> 
      <xs:element minOccurs="1" maxOccurs="1" name="gender" type="Gender" /> 
      <xs:element minOccurs="1" maxOccurs="1" name="height" type="xs:int" /> 
      <xs:element minOccurs="1" maxOccurs="1" name="weight" type="xs:decimal" /> 
     </xs:sequence> 
     </xs:complexType> 
     <xs:simpleType name="Gender"> 
     <xs:restriction base="xs:string"> 
      <xs:enumeration value="Male" /> 
      <xs:enumeration value="Female" /> 
     </xs:restriction> 
     </xs:simpleType> 
</xs:schema> 

Создать новую папку для работы в Я использую «C: \ STACK».
Создайте новый текстовый файл, скопируйте и вставьте XSD в него и сохраните его как «person.xsd».
Теперь нам нужно использовать XSD.exe для преобразования этого файла в класс.
Вам нужно будет найти XSD exe на вашем компьютере, для меня он был в:
C: \ Program Files (x86) \ Microsoft SDK \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools \ xsd.exe

Теперь откройте командную строку и введите этот

cd "C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools" 

Теперь мы создадим классы .NET (здесь это команда разбита)

xsd.exe    -Execute xsd 
/classes   -Create Clasess 
/language:vb  -Language to use (VB, CS, JS) 
/out:"c:\stack\" -Output folder 
c:\stack\person.xsd -The XSD File to use 

Вот команда в одной строке

xsd.exe c:\stack\person.xsd /classes /language:vb /out:c:\stack\ 

После выполнения этой команды будет создан новый файл «C: \ стек \ person.vb» Вы можете добавить этот класс в ваш проект.

Шаг 2 - Создайте новый экземпляр этого класса и сериализовать выход

Теперь, когда вы добавили новый класс, вы можете создать его экземпляр:

Dim person As New Person 
    person.firstName = "Mike" 
    person.lastName = "Bateman" 
    person.gender = Gender.Male 
    person.height = 160 
    person.weight = 80.3 

Теперь мы можем сериализации класс в XML-файле:

Dim serializer As New XmlSerializer(GetType(Person)) 
    Dim writer As New StreamWriter("c:\stack\person.xml") 
    serializer.Serialize(writer, person) 
    writer.Close() 

И мы можем прочитать XML обратно в класс .NET, как это:

Dim serializer As New XmlSerializer(GetType(Person)) 
    Dim reader As New IO.StreamReader("c:\stack\person.xml") 
    Dim personRes As Person = serializer.Deserialize(reader) 
    reader.Close() 
    reader.Dispose() 

Надеюсь, что это поможет!

+0

спасибо. Способ использования Сериализатора был тем, что я пропустил. Теперь он работает нормально. – Twiebie

+2

Командная строка XSD Примечание. Вы можете захотеть добавить пространство имен в выходной файл. Итак, xsd.exe c: \ stack \ person.xsd/classes/language: vb/namespace: MyNamespace/out: c: \ stack \ –

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