如果您想要解析XML文件并在.net中创建自动生成的类,那么您应该使用xsd.exe工具来完成此工作,该工具是Visual Studio中开发工具的一部分。
您将需要打开Dev Command Prompt来运行该工具。 Open Command Prompt from inside Visual Studio
VS 2013命令提示符的默认位置是here,但是这可能会根据安装位置而改变。
在命令提示符下运行以下命令:
XSD 'yourfilename'.xml
例子: 这将自动生成的XML计划文件' yourfilename'.xsd在目录文件夹中。
接下来,我们要使用自动创建的XSD文件在我们所选择的语言自动生成的代码:
XSD“yourfilename'.xsd /班/语言:VB
示例: 这将从XSD文件创建一个自动生成的.NET类,该类将包含在名为'yourfilename'.vb的文件中。
然后,您可以简单地将您的类文件添加到您的项目。我选择VB,但你可以选择'CS','VB','JS','VJS'或'CPP'。
这是创建在VB文件中的代码:
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict Off
Option Explicit On
Imports System.Xml.Serialization
'
'This source code was auto-generated by xsd, Version=4.0.30319.33440.
'
'''<remarks/>
<System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.33440"), _
System.SerializableAttribute(), _
System.Diagnostics.DebuggerStepThroughAttribute(), _
System.ComponentModel.DesignerCategoryAttribute("code"), _
System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=true), _
System.Xml.Serialization.XmlRootAttribute([Namespace]:="", IsNullable:=false)> _
Partial Public Class MyFile
Private myTableField() As MyFileMyTable
Private versionProductField As String
Private versionCreateField As String
Private versionFileField As String
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute("MyTable", Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property MyTable() As MyFileMyTable()
Get
Return Me.myTableField
End Get
Set
Me.myTableField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlAttributeAttribute()> _
Public Property VersionProduct() As String
Get
Return Me.versionProductField
End Get
Set
Me.versionProductField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlAttributeAttribute()> _
Public Property VersionCreate() As String
Get
Return Me.versionCreateField
End Get
Set
Me.versionCreateField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlAttributeAttribute()> _
Public Property VersionFile() As String
Get
Return Me.versionFileField
End Get
Set
Me.versionFileField = value
End Set
End Property
End Class
'''<remarks/>
<System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.33440"), _
System.SerializableAttribute(), _
System.Diagnostics.DebuggerStepThroughAttribute(), _
System.ComponentModel.DesignerCategoryAttribute("code"), _
System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=true)> _
Partial Public Class MyFileMyTable
Private standardTableField() As MyFileMyTableStandardTable
Private sizeField As String
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute("StandardTable", Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property StandardTable() As MyFileMyTableStandardTable()
Get
Return Me.standardTableField
End Get
Set
Me.standardTableField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlAttributeAttribute()> _
Public Property Size() As String
Get
Return Me.sizeField
End Get
Set
Me.sizeField = value
End Set
End Property
End Class
'''<remarks/>
<System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.33440"), _
System.SerializableAttribute(), _
System.Diagnostics.DebuggerStepThroughAttribute(), _
System.ComponentModel.DesignerCategoryAttribute("code"), _
System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=true)> _
Partial Public Class MyFileMyTableStandardTable
Private myRecordField() As MyFileMyTableStandardTableMyRecord
Private typeField As String
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute("MyRecord", Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property MyRecord() As MyFileMyTableStandardTableMyRecord()
Get
Return Me.myRecordField
End Get
Set
Me.myRecordField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlAttributeAttribute()> _
Public Property Type() As String
Get
Return Me.typeField
End Get
Set
Me.typeField = value
End Set
End Property
End Class
'''<remarks/>
<System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.33440"), _
System.SerializableAttribute(), _
System.Diagnostics.DebuggerStepThroughAttribute(), _
System.ComponentModel.DesignerCategoryAttribute("code"), _
System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=true)> _
Partial Public Class MyFileMyTableStandardTableMyRecord
Private priorityField As String
Private sizeField As String
Private lengthField As String
Private weightField As String
Private ageField As String
Private refField As String
'''<remarks/>
<System.Xml.Serialization.XmlAttributeAttribute()> _
Public Property Priority() As String
Get
Return Me.priorityField
End Get
Set
Me.priorityField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlAttributeAttribute()> _
Public Property Size() As String
Get
Return Me.sizeField
End Get
Set
Me.sizeField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlAttributeAttribute()> _
Public Property Length() As String
Get
Return Me.lengthField
End Get
Set
Me.lengthField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlAttributeAttribute()> _
Public Property Weight() As String
Get
Return Me.weightField
End Get
Set
Me.weightField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlAttributeAttribute()> _
Public Property Age() As String
Get
Return Me.ageField
End Get
Set
Me.ageField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlAttributeAttribute()> _
Public Property Ref() As String
Get
Return Me.refField
End Get
Set
Me.refField = value
End Set
End Property
End Class
'''<remarks/>
<System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.33440"), _
System.SerializableAttribute(), _
System.Diagnostics.DebuggerStepThroughAttribute(), _
System.ComponentModel.DesignerCategoryAttribute("code"), _
System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=true), _
System.Xml.Serialization.XmlRootAttribute([Namespace]:="", IsNullable:=false)> _
Partial Public Class NewDataSet
Private itemsField() As MyFile
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute("MyFile")> _
Public Property Items() As MyFile()
Get
Return Me.itemsField
End Get
Set
Me.itemsField = value
End Set
End Property
End Class
我跑了XSD。再次EXE工具来生成C#类以及
其次为这是自genearted代码:
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System.Xml.Serialization;
//
// This source code was auto-generated by xsd, Version=4.0.30319.33440.
//
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.33440")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false)]
public partial class MyFile {
private MyFileMyTable[] myTableField;
private string versionProductField;
private string versionCreateField;
private string versionFileField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("MyTable", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public MyFileMyTable[] MyTable {
get {
return this.myTableField;
}
set {
this.myTableField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string VersionProduct {
get {
return this.versionProductField;
}
set {
this.versionProductField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string VersionCreate {
get {
return this.versionCreateField;
}
set {
this.versionCreateField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string VersionFile {
get {
return this.versionFileField;
}
set {
this.versionFileField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.33440")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class MyFileMyTable {
private MyFileMyTableStandardTable[] standardTableField;
private string sizeField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("StandardTable", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public MyFileMyTableStandardTable[] StandardTable {
get {
return this.standardTableField;
}
set {
this.standardTableField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Size {
get {
return this.sizeField;
}
set {
this.sizeField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.33440")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class MyFileMyTableStandardTable {
private MyFileMyTableStandardTableMyRecord[] myRecordField;
private string typeField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("MyRecord", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public MyFileMyTableStandardTableMyRecord[] MyRecord {
get {
return this.myRecordField;
}
set {
this.myRecordField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Type {
get {
return this.typeField;
}
set {
this.typeField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.33440")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class MyFileMyTableStandardTableMyRecord {
private string priorityField;
private string sizeField;
private string lengthField;
private string weightField;
private string ageField;
private string refField;
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Priority {
get {
return this.priorityField;
}
set {
this.priorityField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Size {
get {
return this.sizeField;
}
set {
this.sizeField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Length {
get {
return this.lengthField;
}
set {
this.lengthField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Weight {
get {
return this.weightField;
}
set {
this.weightField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Age {
get {
return this.ageField;
}
set {
this.ageField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Ref {
get {
return this.refField;
}
set {
this.refField = value;
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.33440")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false)]
public partial class NewDataSet {
private MyFile[] itemsField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("MyFile")]
public MyFile[] Items {
get {
return this.itemsField;
}
set {
this.itemsField = value;
}
}
}
**你也可以提供命名空间作为参数。
你试过了什么?任何代码示例? 'EnvDTE'&'VSIX'是你正在寻找的关键字。 – Tatranskymedved
@Tatranskymedved @Tatranskymedved我已经找到了解决方案,我只是认为我会分享,将它作为答案张贴在 –
以下如果你倒退了,请解释一下,我会很乐意改变我的问题 –