vb.net - 从 XSD 创建 Class 并生成 xml
vb.net - Create Class from XSD and generate xml
我有一个 xsd 文件,需要从中创建一个 xml。
某些页面假定使用 Visual Studio 中的 xsd.exe。
但是我如何 link 生成 class 到 xsd,从中创建 xml 文件?
或者是否有另一种方法可以通过 xsd 模式将值导出到 xml 文件?
如果您想创建一个基于 XSD 的 XML 文档,您需要完成几个步骤。
1) 您将需要根据您的 XSD.
创建 .NET classes
2) 您将需要创建该 class 的新实例并序列化输出。
第 1 步 - 从 XSD 文档
创建 .NET Class
XSD 文件提供了 class 的蓝图。这是 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 将此文件转换为 class.
你需要在你的机器上找到 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 classes(这里是分解的命令)
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'
然后您可以将此 class 添加到您的项目中。
第 2 步 - 创建一个新实例 class 并序列化输出
现在您已经添加了新的 class,您可以创建它的一个实例:
Dim person As New Person
person.firstName = "Mike"
person.lastName = "Bateman"
person.gender = Gender.Male
person.height = 160
person.weight = 80.3
现在我们可以将 class 序列化为 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 class:
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 文件,需要从中创建一个 xml。 某些页面假定使用 Visual Studio 中的 xsd.exe。 但是我如何 link 生成 class 到 xsd,从中创建 xml 文件?
或者是否有另一种方法可以通过 xsd 模式将值导出到 xml 文件?
如果您想创建一个基于 XSD 的 XML 文档,您需要完成几个步骤。
1) 您将需要根据您的 XSD.
创建 .NET classes
2) 您将需要创建该 class 的新实例并序列化输出。
第 1 步 - 从 XSD 文档
创建 .NET ClassXSD 文件提供了 class 的蓝图。这是 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 将此文件转换为 class.
你需要在你的机器上找到 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 classes(这里是分解的命令)
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' 然后您可以将此 class 添加到您的项目中。
第 2 步 - 创建一个新实例 class 并序列化输出
现在您已经添加了新的 class,您可以创建它的一个实例:
Dim person As New Person
person.firstName = "Mike"
person.lastName = "Bateman"
person.gender = Gender.Male
person.height = 160
person.weight = 80.3
现在我们可以将 class 序列化为 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 class:
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()
希望对您有所帮助!