使用Xerces DOM解析器针对多个xml模式进行验证 我想知道在C++中使用XRESCES DOM解析器是否有办法验证多个XML方案?

使用Xerces DOM解析器针对多个xml模式进行验证 我想知道在C++中使用XRESCES DOM解析器是否有办法验证多个XML方案?,c++,xerces,validating,C++,Xerces,Validating,以下是用例:我希望能够根据其对应的xsd模式解析多个xml文件。然而,当我最初查看每个xml文件时,在解析它之前我不知道它是什么文件,因此我无法将静态xsd文件链接到它。有没有一种说法,我想根据xsd1或xsd2等验证每个xml文件 仔细阅读后,解析器“setExternalSchemaLocation”的设置似乎能够保存方案列表,但当我在代码中执行此操作时,它无法正确验证 parser->setExternalSchemaLocation("http://www.somelocation

以下是用例:我希望能够根据其对应的xsd模式解析多个xml文件。然而,当我最初查看每个xml文件时,在解析它之前我不知道它是什么文件,因此我无法将静态xsd文件链接到它。有没有一种说法,我想根据xsd1或xsd2等验证每个xml文件

仔细阅读后,解析器“setExternalSchemaLocation”的设置似乎能够保存方案列表,但当我在代码中执行此操作时,它无法正确验证

parser->setExternalSchemaLocation("http://www.somelocation schema.xsd http://www.somelocation schema1.xsd");
如果我这样做的话,模式本身就可以工作

parser->setExternalSchemaLocation("http://www.somelocation schema.xsd");
因此,我确信我的xml或xsd文件中没有错误


对如何针对多个xml模式进行验证有何见解?

如果每个xml都位于同一名称空间中,则代码不起作用。每个xml文件必须位于不同的命名空间中,才能使上述代码正常工作

parser->setExternalSchemaLocation("http://www.somelocation schema.xsd http://www.somelocation1 schema1.xsd"); 

您是否尝试过将模式分别设置为两个命令而不是一行?类似于:parser->setExternalSchemaLocation(“schema.xsd”);解析器->setExternalSchemaLocation(“schema1.xsd”)@Sii:那不行,Xerces文档说:“如果这个方法被调用多次,只有最后一个有效。”@Sii是的,我分别尝试了这两个命令,正如Eugen提到的,它会互相覆盖。@Eugen抱歉,没有错误消息。那是我的错别字。我希望Xerces能够在xml与模式不匹配时抛出错误。当我将此操作与一个架构进行比较时,它将成功执行。当我尝试将它与多个模式(如上面的代码片段)进行比较时,它不会在应该的时候失败。所以我想知道是否有一种方法可以根据多个模式验证xml文件。