MSXML6 类和属性的问题

Problem with MSXML6 classes and properties

提问人:aprotiere 提问时间:6/22/2023 最后编辑:aprotiere 更新时间:6/22/2023 访问量:59

问:

我正在使用 MSXML6 根据 XSD 架构验证一些 XML 文件。

根据此示例本文档,IXMLDomDocument 具有一个名为 schemas 的属性,该属性应该允许我加载 xsd 文件并将其与我的文档相关联。

我的问题是,在这一行上:,Visual说pXD->schemas = pXS.GetInterfacePtr();class "MSXML2::IXMLDOMDocument2" has no member "schemas"

这是我的代码的样子:

...
#import <msxml6.dll>
using namespace MSXML2;
...
bool validate_XML_against_XSD(){
    ...
    IXMLDOMSchemaCollectionPtr   pXS;
    IXMLDOMDocument2Ptr          pXD = NULL;
    MSXML2::IXMLDOMParseErrorPtr pErr = NULL;
    _bstr_t                      strResult = "";

    CComVariant  xsd_file;
    xsd_file = "path_to_xsd";

    BSTR empty_bstr = SysAllocString(L"urn:namespace");

    HRESULT hr = pXS.CreateInstance(__uuidof(XMLSchemaCache60));
    hr = pXS->add(empty_bstr, xsd_file);

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

    // 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");
    ...
}

我也遇到了同样的错误:

pXD->async = VARIANT_FALSE;
pXD->validateOnParse = VARIANT_TRUE;
pXD->resolveExternals = VARIANT_TRUE;

它说等等class "MSXML2::IXMLDOMDocument2" has no member "async"

所以,我真的不明白为什么这么多不同的例子似乎对这个代码示例没有问题,但我确实如此。

我试图寻找其他文档或stackoverflow帖子,这些帖子会告诉我以其他方式做,但我没有找到。

是库导入问题还是我的代码问题?有人知道如何解决这个问题吗?

谢谢

C++ XML XSD MSXML MSXML6

评论


答: 暂无答案