如何在C ++中针对XSD验证XML节点?

时间:2010-06-10 18:21:37

标签: c++ msxml ixmldomdocument

请注意,我要求针对特定节点而不是整个文件进行验证。 例如

<somexmldoc>
    <someNode>
        <UserDefinedNode> </>
        <UserDefinedNode> </>
    </someNode>
</somexmldoc>

对于这个XML文档,我有一个fullDoc.XSD,可用于验证整个文档,除了“UserDefinedNode”(此节点在xsd中使用“any”标记指定,允许用户在该节点下定义任何内容)。

是否可以使用单独的userdefined.XSD文件来验证“UserDefinedNode”?是否可以使用MSXML for C ++(IXMLDomDocument)来验证这一点?

谢谢!

3 个答案:

答案 0 :(得分:1)

XSD适用于整个DOM文档,但不适用于DOM片段。但是,由于您的片段也是有效的XML,为什么不将它作为根复制到另一个DOM对象?您可以利用appendChild或cloneNode来实现此目的,然后验证新的DOM。

顺便说一下,如果你想验证指定的DOM片段,validateNode方法适合你。

答案 1 :(得分:0)

是的,这是可能的。我建议下载Microsoft Core XML Services (MSXML) 6.0 SDK,因为它有一个C ++示例代码,说明如何执行此操作。

答案 2 :(得分:0)

应该可以。我找到了一个名为 HOW TO:针对Visual C#.NET 中的XML模式验证XML片段的文档(see here)。这是C#,但你应该能够翻译这个: - )