我想根据 XML 架构文件验证 XML 文件。它是一个简单的 xml 文件,不包括命名空间等。我想在 C++ 中使用 MSXML 6.0 来做到这一点。
最佳答案
您可以在加载时进行验证。这是来自 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 。
关于c++ - 使用 msxml 解析器验证 xml 架构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1048764/