首页 文章

如何从xsd生成.NET 4.0类?

提问于
浏览
254

使用Visual Studio 2010从xsd文件生成.NET 4.0 c#类(实体)有哪些选项?

6 回答

  • 413

    我在批处理脚本中使用 XSD 直接从 XML 生成 .xsd 文件和类:

    set XmlFilename=Your__Xml__Here
    set WorkingFolder=Your__Xml__Path_Here
    
    set XmlExtension=.xml
    set XsdExtension=.xsd
    
    set XSD="C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1\Tools\xsd.exe"
    
    set XmlFilePath=%WorkingFolder%%XmlFilename%%XmlExtension%
    set XsdFilePath=%WorkingFolder%%XmlFilename%%XsdExtension%
    
    %XSD% %XmlFilePath% /out:%WorkingFolder%
    %XSD% %XsdFilePath% /c /out:%WorkingFolder%
    
  • 1

    Marc Gravells的回答对我来说是对的,但是我的xsd扩展名为.xml . 当我使用xsd程序时,它给出了:
    - The table (Amt) cannot be the child table to itself in nested relations.

    根据这个KB325695我将.xml的扩展名重命名为.xsd,它运行正常 .

  • 3

    很简单;刚运行(在vs命令提示符下)

    xsd your.xsd /classes
    

    (这将创建 your.cs ) . 但请注意,自2.0以来,此处的大多数内在选项都没有太大变化

    对于选项,请使用 xsd /?see MSDN;例如 /enableDataBinding 可能很有用 .

  • 52

    Marc Gravell提到的xsd.exe . 启动和运行IMO的最快方法 .

    或者如果您需要更多灵活性/选项:

    xsd2code VS加载项(Codeplex)

  • 0

    当你有循环引用时,xsd.exe不能正常工作(即一个类型可以直接或间接拥有自己类型的元素) .

    当存在循环引用时,我使用Xsd2Code . Xsd2Code很好地处理循环引用,并在VS IDE中工作,这是一个很大的优点 . 它还具有许多功能,例如生成序列化/反序列化代码 . 如果您正在生成序列化,请确保打开GenerateXMLAttributes(否则如果未在所有元素上定义,您将获得排序异常) .

    两者都不适用于选择功能 . 你最终会得到对象的列表/集合而不是你想要的类型 . 如果可能的话,我建议在xsd中避免选择,因为这不会很好地序列化/反序列化为强类型类 . 如果你不关心这个,那么这不是问题 .

    xsd2code中的任何功能反序列化为System.Xml.XmlElement,我觉得这很方便但如果你想要强类型对象可能会有问题 . 我经常在允许自定义配置数据时使用any,因此XmlElement可以方便地传递给另一个在其他地方自定义的XML反序列化器 .

  • 13

    我在Windows命令提示符下使用了 xsd.exe .

    但是,由于我的xml引用了几个在线xml(在我的情况下 http://www.w3.org/1999/xlink.xsd 引用了 http://www.w3.org/2001/xml.xsd ),我还必须下载这些原理图,将它们放在与我的xsd相同的目录中,然后在命令中列出这些文件:

    “C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Tools \ xsd.exe”/ classes / language:CS your.xsd xlink.xsd xml.xsd

相关问题