从C#中的类生成XSD

时间:2013-11-20 18:09:53

标签: c# xml serialization xsd

我正在制作一个将配置保存到XML文件的程序。

我目前使用XMLserializer从类生成XML,反之亦然。

我希望能够从类中生成一个XSD文件,以便能够验证未来的XML文件,包括那些不是自动生成的文件。

此功能应包括指定元素属性的选项,例如minValue,maxLength和默认值(可能使用注释)。

到目前为止,我读过的唯一工具是XSD.exe,我不知道如何以编程方式使用(来自C#代码),如果这是一个很好的方法。

2 个答案:

答案 0 :(得分:1)

还有其他工具可以从XSD生成C#(例如XSD2Code),但我不知道他们是否有程序化API。

您始终可以使用Process.Start()从C#应用程序中启动XSD.exe(或任何其他工具)进程。一个快速而又肮脏的例子:

var proc = Process.Start(new ProcessStartInfo
    {
        FileName = "xsd.exe",
        Arguments = "/c /namespace:Your.NameSpace yourXsdFile.xsd /o:\"C:\\yourOutputDir\\\"",
        WindowStyle = ProcessWindowStyle.Hidden,
        UseShellExecute = false
    });
proc.WaitForExit();
var exitCode = proc.ExitCode;
if (exitCode == 0)
{
    // post-processing
}
else
{
    // handle errors
}

显然有一些细节要填写,你需要XSD.exe在你的PATH中(或者,在代码中指定它的完整路径)等,但基本的想法应该有效。 / p>

答案 1 :(得分:0)

 Go to your command prompt. After that go to the following path
 1.C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\x64>
 2. After that write 
 xsd.exe
 3. After that paste you .dll file path.
 4. run command
 5.Output: Go to the following location:(** Command prompt indicate you about such link) and you will see your desire xsd file schema
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0
Tools\x64\

Example: in CMD.exe
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\x64>xsd.
exe "E:\TFS Projects\Project\Admin\BO\bin\Debug\BO.dll"
Microsoft (R) Xml Schemas/DataTypes support utility
[Microsoft (R) .NET Framework, Version 4.0.30319.1]
Copyright (C) Microsoft Corporation. All rights reserved.
Writing file 'C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0
Tools\x64\schema0.xsd'.