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

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

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

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


当前回答

Windows有免费的XML记事本2007。 您可以选择用于验证的XSD

更新:更好的是,使用notepad++和XML Tools插件

其他回答

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

我倾向于使用Microsoft的xsd来帮助从. net文件生成xsd。我还使用xmlstarlet解析出xml的各个部分。最后一个对您有用的免费工具是altovaxml,可以通过以下URL获得:http://www.altova.com/download_components.html。

这允许我通过解析xml来扫描所有的xml文件,选择要使用的xsd。

# Function:
#    verifyschemas - Will validate all xml files in a configuration directory against the schemas in the passed in directory
# Parameters:
#    The directory where the schema *.xsd files are located.  Must be using dos pathing like: VerifySchemas "c:\\XMLSchemas\\"
# Requirements:
#    Must be in the directory where the configuration files are located
#
verifyschemas()
{
    for FILENAME in $(find . -name '*.xml' -print0 | xargs -0)
    do
        local SchemaFile=$1$(getconfignamefromxml $FILENAME).xsd
        altovaxml /validate $FILENAME /schema $SchemaFile > ~/temp.txt 2> /dev/null
        if [ $? -ne 0 ]; then
            printf "Failed to verify: "
            cat ~/temp.txt | tail -1 | tr -d '\r'
            printf "    - $FILENAME with $SchemaFile\n"
        fi
    done
}

要生成我使用的xml: xsd DOTNET.dll /type:CFGCLASS & rename schema0. dllxsd CFGCLASS.xsd

要获得xsd名称,我使用: xmlstarlet sel -t -m /XXX/* -v local-name() $1 | sed 's/ $//'

这允许我使用xml文件中的元素标记拾取正确的XSD。

最终结果是,我可以调用一个bash函数来扫描所有XML文件并验证它们。即使它们在多个子目录中。

http://www.xmlvalidation.com/

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

我使用Xerces:

http://xerces.apache.org/xerces-c/

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