首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

C++ 用Schema验证xml文件有关问题(MSXML)

2013-11-14 
C++ 用Schema验证xml文件问题(MSXML)msxml里有没有现成的库可以根据自己定义的schema验证xml?没有的话是不

C++ 用Schema验证xml文件问题(MSXML)
msxml里有没有现成的库可以根据自己定义的schema验证xml?没有的话是不是只能按自己特定的schema写程序去验证?
以下是从网上找的代码,其中有schema与xml的关联啊,但为什么无论xml文件有没有错,都会加载成功,包括节点顺序错误、数据类型不对等等这些错误都检测不出来。求解啊!
    CString scmFile = "schema.xsd";
    CString xmlFile = "student.xml";
    _variant_t vFile((LPCTSTR)xmlFile);
 
    // 创建 schema
    MSXML2::IXMLDOMSchemaCollectionPtr pSchema ;
pSchema.CreateInstance(__uuidof(XMLSchemaCache60));
 
    // 加载 schema 文件,或者以文件名为参数
    pSchema ->add(_bstr_t("http://tempuri.org/schema.xsd"),_variant_t((LPCTSTR )scmFile));
 
    // 创建文件组件
    MSXML2 ::IXMLDOMDocumentPtr pDoc ;
    pDoc .CreateInstance (__uuidof(DOMDocument60));
    pDoc ->async = VARIANT_FALSE ;
    pDoc ->validateOnParse = VARIANT_TRUE ;
 
    // 关联 xml 和 schema
    MSXML2 ::IXMLDOMDocument2Ptr pDoc2 = pDoc;
    pDoc2->schemas = pSchema.GetInterfacePtr();
 
    // 加载文件和判断
    VARIANT_BOOL bRet = pDoc ->load(vFile);
    if (bRet == VARIANT_TRUE )
    {
MessageBox(NULL,_T("xml文件加载成功!"),_T("Information"),MB_OK|MB_ICONINFORMATION);
return true;
    }
    else
    {
CString strError ;
        MSXML2 ::IXMLDOMParseErrorPtr pError = pDoc ->parseError ;
        strError .Format (
_T ("xml文件加载失败: code=%d, reson=%s" ),
            pError ->errorCode , (LPCTSTR)pError ->reason );
            MessageBox(NULL,strError,_T("Information"),MB_OK|MB_ICONINFORMATION);
return false;
} XML Schema MSXML C++
[解决办法]
很明显有,而且你给出了代码,仔细检查你的数据和程序

还可以参考
http://blog.csdn.net/crybird/article/details/4404899

热点排行