vb.net - 从XSD创建类并生成xml

Twi*_*bie 1 xml vb.net xsd

我有一个xsd文件,需要从中创建一个xml.某些页面假定使用Visual Studio中的xsd.exe.但是如何将生成的类链接到xsd,从中创建xml文件?

或者是否有另一种方法可以通过xsd架构将值导出到xml文件?

小智 10

如果要创建基于XSD的XML文档,则需要执行几个步骤.

1)您需要根据XSD创建.NET类.
2)您需要创建该类的新实例并序列化输出.

步骤1 - 从XSD文档创建.NET类

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>
Run Code Online (Sandbox Code Playgroud)

创建一个新的文件夹.我正在使用'C:\ STACK'.
创建新的文本文件,将XSD复制并粘贴到其中,并将其另存为"person.xsd".
现在我们需要使用XSD.exe将此文件转换为类.
你需要在你的机器上找到XSD exe,对我来说它是在:
C:\ Program Files(x86)\ Microsoft SDKs\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"
Run Code Online (Sandbox Code Playgroud)

现在我们将创建.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  
Run Code Online (Sandbox Code Playgroud)

这是一行中的命令

xsd.exe c:\stack\person.xsd /classes /language:vb /out:c:\stack\  
Run Code Online (Sandbox Code Playgroud)

运行此命令后,将创建一个新文件'c:\ stack\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
Run Code Online (Sandbox Code Playgroud)

现在我们可以将类序列化为XML文件:

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

我们可以将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()
Run Code Online (Sandbox Code Playgroud)

希望有所帮助!

  • XSD命令行注意:您可能希望将命名空间添加到输出文件中.所以xsd.exe c:\ stack\person.xsd/classes/language:vb/namespace:MyNamespace/out:c:\ stack \ (2认同)