【问题标题】:Any tools to generate an XSD schema from an XML instance document? [closed]有什么工具可以从 XML 实例文档生成 XSD 模式? [关闭]
【发布时间】:2010-09-09 15:31:31
【问题描述】:

我正在寻找一种工具,它可以获取 XML 实例文档并输出相应的 XSD 架构。

我当然认识到,与手动创建架构相比,生成的 XSD 架构会受到限制(它可能无法处理可选或重复元素或数据约束),但它至少可以作为一个快速起点.

【问题讨论】:

    标签: xml xsd schema generator


    【解决方案1】:

    Microsoft XSD inference tool 是一个很好的免费解决方案。许多 XML 编辑工具,例如 XmlSpy(@Garth Gilmour 提到)或 OxygenXML Editor 也具有该功能。不过,它们相当昂贵。 BizTalk Server 也有一个 XSD 推断工具。

    编辑:我刚刚发现了 .net XmlSchemaInference 类,所以如果你正在使用 .net,你应该考虑一下

    【讨论】:

    • 哇,几个月后,您向我指出了一个很好的解决方案,可以快速将 XDR 转换为 XSD!谢谢!
    • 我很难找到这个工具 (xsd.exe) 的下载,但它已经在我的系统上的 C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0 \斌。只是想我会分享以防万一。
    • 如果有人没有安装 Visual Studio,这里是下载 xsd 的替代链接:juliankay.com/development/download-xsd-exe
    • 该目录在 Windows 7 上似乎 xsd.exe 已更改。我在许多 Microsoft SDKs 目录中都有它(所以它似乎不再依赖于 Visual Studio?),其中一个:C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools。我必须在包含 xml 的目录中运行它,以防止出现有关“路径中的非法字符”的错误,但这可能是由于我拥有的长文件名。
    • 是否有其他人在使用 MS XSD 推理工具时遇到问题,为 200MB 的 XML 文件引发 OutOfMemoryException 仍然超过 8GB 的​​可用 RAM?
    【解决方案2】:

    您可以使用开源和跨平台选项:来自Apache's XMLBeans 的 inst2xsd。我觉得它非常有用且简单。

    只需下载、解压缩和播放(需要 Java)。

    【讨论】:

    • 很好的提示,这对我帮助很大,谢谢!
    • OMG 这比 Powershell 的那些废话好多了!特别是因为我没有 XSD 文件!
    • 就像一个魅力 :: cd ; ./inst2xsd -design ss -simple-content-types smart -enumerations 4 -outDir
    • 请注意,XMLBeans 已移至 attic.apache.org,这是已退役的 Apache 项目的所在地。换句话说,它自 2012 年以来就没有更新过。
    【解决方案3】:

    Trang 是这里的最佳选择。开源和跨平台(虽然需要Java)

    来自董里网站:

    Trang 在 XML 的不同模式语言之间进行转换。它支持以下语言

    • RELAX NG(XML 语法)
    • RELAX NG 紧凑语法
    • XML 1.0 DTD
    • W3C XML 架构

    用任何受支持的模式语言编写的模式都可以转换为任何其他受支持的模式语言,但 W3C XML 模式仅支持输出,不支持输入。

    Trang 还可以从一个或多个示例 XML 文档中推断出架构。

    Download Link

    【讨论】:

    • Trang 也是集成到 OxygenXML 中的工具,用于从一个或多个 XMl 文档进行 XSD 推断。在这里第一次尝试似乎效果很好。
    • 如果您只需要从 xml 文件生成 xsd,trang 是最好、最快和最简单的恕我直言。
    • trang 文档有点薄。要生成架构,请运行 $ trang file.xml schema.xsd
    • 在 Windows 上运行:java -jar trang.jar file.xml schema.xsd
    • 在我的 XML 示例中的各个地方都有以相同形式出现的子结构,Trang 在检测重复和生成最小 XSD 方面做得非常好,这正是我所需要的。非常好!
    【解决方案4】:

    在 VS2010 中,如果您将 XML 文件加载到编辑器中,请单击 XML 菜单 >> Create Schema。

    【讨论】:

    • 以及更高版本
    【解决方案5】:

    还有XML schema learner 可以在Github 上找到。

    它可以获取多个 xml 文件从所有这些文件中提取一个通用 XSD

    【讨论】:

    • 请注意这个工具是用php编写的,所以设置起来并不简单。
    • @79E09796 使用sudo apt-get install php5-cli 安装cli php 并运行./learn --help --- 我看不出它与用java、python 或ruby 编写的工具之间的区别:)跨度>
    • 刚刚在windows下试过——在没有任何安装的情况下使用php 5.4效果很好。 php 和 XML Schema 学习器都刚刚解压缩并使用完整路径执行;)
    • locality 字段的小注释:如果在 XML 中的多个位置使用字段名称来引用 不同 元素,则大于 1 的 locality 值是需要,例如root/itemroot/something/item指的是不同的类型,那么--locality 2至少是必需的
    【解决方案6】:

    如果您安装了 .Net,则默认情况下已包含生成 XSD 架构和类的工具。
    对我来说,XSD 工具安装在以下结构下。这可能因您的安装目录而异。

    C:\Program Files\Microsoft Visual Studio 8\VC>xsd
    Microsoft (R) Xml Schemas/DataTypes support utility
    [Microsoft (R) .NET Framework, Version 2.0.50727.42]
    Copyright (C) Microsoft Corporation. All rights reserved.
    
    xsd.exe -
       Utility to generate schema or class files from given source.
    
    xsd.exe <schema>.xsd /classes|dataset [/e:] [/l:] [/n:] [/o:] [/s] [/uri:]
    xsd.exe <assembly>.dll|.exe [/outputdir:] [/type: [...]]
    xsd.exe <instance>.xml [/outputdir:]
    xsd.exe <schema>.xdr [/outputdir:]
    

    通常,此工具生成的类和模式运行良好,尤其是如果您打算以 .Net 语言使用它们时

    我通常采用我所追求的 XML 文档,通过带有 /o:&lt;your path&gt; 标志的 XSD 工具将其推送以生成模式 (xsd),然后使用 /classes /L:VB (or CS) /o:&lt;your path&gt; 标志通过该工具将 xsd 文件推送回获取可以在日常 .Net 项目中导入和使用的类

    【讨论】:

      【解决方案7】:

      如果你想要的只是 XSD,LiquidXML 有一个免费的 XSD 版本,它有一个 GUI,所以你可以根据需要调整 XSD。不管怎样,现在我都是自己手动编写 XSD,但这一切都归功于这个应用程序。

      http://www.liquid-technologies.com/

      【讨论】:

        【解决方案8】:

        如果您在 java 领域工作 - intelliJ idea 还具有广泛的 xml 支持,包括 xsd 生成和 xsd 生成的 xml 示例,并且通过插件您可以获得 xslt 调试器。 - 如果您打算之后使用 jaxb 等工具,那就太好了。

        【讨论】:

        • 这也可以在 Idea 的免费社区版中找到。
        【解决方案9】:

        Altova XmlSpy 做得很好 - 你可以找到概述here

        【讨论】:

          【解决方案10】:

          这是一个旧线程,但我认为发布此链接可能会很有用:刚刚找到这个工具: xsd-gen Generate XML Schema from XML

          它只是做了我需要的。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-04-24
            • 2011-12-09
            • 2011-03-12
            • 2019-02-08
            • 1970-01-01
            • 2018-06-30
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多