【问题标题】:vb.net - Create Class from XSD and generate xmlvb.net - 从 XSD 创建类并生成 xml
【发布时间】:2016-02-09 06:55:07
【问题描述】:

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

或者还有其他方法可以通过 xsd 模式将值导出到 xml 文件吗?

【问题讨论】:

    标签: xml vb.net xsd


    【解决方案1】:

    如果要创建基于 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>
    

    创建一个新文件夹以供使用。我正在使用“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"
    

    现在我们将创建 .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:\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
    

    现在我们可以将类序列化为 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()
    

    希望有帮助!

    【讨论】:

    • 谢谢。序列化器的使用方式是我错过的。现在它工作正常。
    • XSD 命令行 注意:您可能希望将命名空间添加到输出文件。所以 xsd.exe c:\stack\person.xsd /classes /language:vb /namespace:MyNamespace /out:c:\stack\
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多