使用msxml解析器验证xml架构

时间:2009-06-26 12:03:10

标签: c++ xsd msxml

我想针对XML Schema文件验证XML文件。它是一个简单的xml文件,不包含命名空间等。我想在c ++中使用MSXML 6.0来实现。

1 个答案:

答案 0 :(得分:3)

您可以在加载时进行验证。这是来自Windows / MSXML SDK的示例代码:

   IXMLDOMSchemaCollectionPtr   pXS;
   IXMLDOMDocument2Ptr          pXD = NULL;
   IXMLDOMParseErrorPtr         pErr = NULL;
   _bstr_t                      strResult = "";

   HRESULT hr = pXS.CreateInstance(__uuidof(XMLSchemaCache50));
   hr = pXS->add("urn:namespace", "myschema.xsd");

   // Create a DOMDocument and set its properties.
   hr = pXD.CreateInstance(__uuidof(DOMDocument50));

   // Assign the schema cache to the DOMDocument's
   // schemas collection.
   pXD->schemas = pXS.GetInterfacePtr();

   // Load books.xml as the DOM document.
   pXD->async = VARIANT_FALSE;
   pXD->validateOnParse = VARIANT_TRUE;
   pXD->resolveExternals = VARIANT_TRUE;
   hr = pXD->load("TheXmlDocument.xml");

   // check hr and pXD->errorCode here

您可以download the MSXML6 SDK获取此示例以及其他许多示例。注意:它不会安装在Vista上。如果您运行Vista,请获取Windows SDK