<分区>
在办公室,我们目前正在编写一个应用程序,该应用程序将根据给定的模式生成 XML 文件。我们在 .XSD 文件中有架构。
是否有工具或库可用于自动测试以检查生成的 XML 是否与架构匹配?
我们更喜欢适合商业用途的免费工具,尽管我们不会捆绑模式检查器,因此它只需要在开发期间供开发人员使用。
如果有任何区别,我们的开发语言是 C++,尽管我认为它不应该,因为我们可以生成 xml 文件,然后通过在测试中调用单独的程序来进行验证。
标签 xml validation xsd schema
<分区>
在办公室,我们目前正在编写一个应用程序,该应用程序将根据给定的模式生成 XML 文件。我们在 .XSD 文件中有架构。
是否有工具或库可用于自动测试以检查生成的 XML 是否与架构匹配?
我们更喜欢适合商业用途的免费工具,尽管我们不会捆绑模式检查器,因此它只需要在开发期间供开发人员使用。
如果有任何区别,我们的开发语言是 C++,尽管我认为它不应该,因为我们可以生成 xml 文件,然后通过在测试中调用单独的程序来进行验证。
最佳答案
经过一些研究,我认为最好的答案是 Xerces ,因为它实现了所有 XSD,所以是跨平台的并且被广泛使用。我创建了一个 small Java project on github使用默认的 JRE 解析器(通常是 Xerces)从命令行进行验证。这可以在 Windows/Mac/Linux 上使用。
还有一个C++ version of Xerces如果您愿意使用它,则可用。 StdInParse utility可用于从命令行调用它。此外,下面的评论者指出了这个 more complete wrapper utility .
您还可以使用 xmllint,它是 libxml 的一部分.您可能已经安装了它。用法示例:
xmllint --noout --schema XSD_FILE XML_FILE
一个问题是 libxml 没有实现所有规范,因此您可能会遇到问题 :(
或者,如果您使用的是 Windows,您可以使用 msxml ,但您需要某种包装器来调用它,例如此 DDJ article 中描述的 GUI .但是,Windows 上的大多数人似乎都使用 XML 编辑器,例如 Notepad++(如 Nate's answer 中所述)或 XML Notepad 2007作为suggested by SteveC (还有几个商业编辑器,这里就不说了)。
最后,不幸的是,您会发现不同的程序会给出不同的结果。这主要是由于 XSD 规范的复杂性。您可能希望使用多种工具测试您的架构。
更新:我在 blog post 中对此进行了扩展.
关于XML Schema (XSD) 验证工具?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/124865/