在办公室,我们目前正在编写一个应用程序,它将根据给定的模式生成XML文件。我们在. xsd文件中拥有模式。

是否有工具或库可以用于自动测试,以检查生成的XML是否与模式匹配?

我们更喜欢适合商业用途的免费工具,尽管我们不会捆绑模式检查器,因此它只需要在开发过程中供开发人员使用。

我们的开发语言是c++,如果这有什么不同的话,尽管我不认为它应该,因为我们可以生成xml文件,然后通过在测试中调用一个单独的程序来进行验证。


当前回答

您可以将XML模式连接到Microsoft Visual Studio的智能感知。这个选项为您提供了实时验证和自动完成,这真是太棒了。

我在免费的Microsoft Visual c++ 2010 Express上运行了这个场景。

其他回答

http://www.xmlvalidation.com/

(请务必勾选“验证外部XML模式”框)

Xmlstarlet是一个命令行工具,可以完成以下工作:

$ xmlstarlet val --help
XMLStarlet Toolkit: Validate XML document(s)
Usage: xmlstarlet val <options> [ <xml-file-or-uri> ... ]
where <options>
  -w or --well-formed        - validate well-formedness only (default)
  -d or --dtd <dtd-file>     - validate against DTD
  -s or --xsd <xsd-file>     - validate against XSD schema
  -E or --embed              - validate using embedded DTD
  -r or --relaxng <rng-file> - validate against Relax-NG schema
  -e or --err                - print verbose error messages on stderr
  -b or --list-bad           - list only files which do not validate
  -g or --list-good          - list only files which validate
  -q or --quiet              - do not list files (return result code only)

NOTE: XML Schemas are not fully supported yet due to its incomplete
      support in libxml2 (see http://xmlsoft.org)

XMLStarlet is a command line toolkit to query/edit/check/transform
XML documents (for more information see http://xmlstar.sourceforge.net/)

在你的情况下,用法应该是这样的:

xmlstarlet val --xsd your_schema.xsd your_file.xml

另一个在线XML模式(XSD)验证器:http://www.utilities-online.info/xsdvalidation/。

IntelliJ IDEA是一个很好的从XML验证和生成XSD的可视化工具,直观而简单。

我只是在学习图式。我使用RELAX NG和使用xmllint来验证。我对xmllint中出现的错误感到沮丧。我希望他们能提供更多信息。

如果XML中有错误的属性,那么xmllint会告诉您不受支持的属性的名称。但是,如果XML中缺少某个属性,则会收到一条消息,说该元素无法验证。

我正在处理一些具有非常复杂规则的非常复杂的XML,而且我是新手,因此追踪缺少哪个属性花费了很长时间。

更新:我刚刚发现了一个我很喜欢的java工具。它可以像xmllint一样从命令行运行,并且它支持RELAX NG: https://msv.dev.java.net/