【发布时间】:2011-01-25 23:48:08
【问题描述】:
我想知道是否有一种方法可以在 C++ 中使用 Xerces DOM 解析器来验证多个 xml 方案?
以下是用例:我希望能够针对其对应的 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 模式进行验证有任何见解吗?
【问题讨论】:
-
您是否尝试过将架构分别设置为两个命令而不是一行?类似于 :parser->setExternalSchemaLocation("somelocation schema.xsd"); parser->setExternalSchemaLocation("somelocation schema1.xsd");
-
@Sii:这行不通,Xerces 文档说:“如果多次调用此方法,则只有最后一个生效。”
-
@Sii 是的,我已经分别尝试了这两个命令,正如 Eugen 提到的,它会相互覆盖。
-
@Eugen 抱歉,没有错误消息。那是我的一个错字。我希望 Xerces 在 xml 与架构不匹配时能够引发错误。当我将它与一个模式进行比较时,此操作已成功执行。当我尝试将它与多个模式(如上面的代码 sn-p)进行比较时,它应该不会失败。所以我想知道是否有办法针对多个模式验证 xml 文件。
标签: c++ xerces validating