欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

c++ 用schema验证xml文件有关问题(msxml)

更新时间: 2014-01-05 02:01:09 责任编辑: Author_N1

 

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;
}
--参考方法--
很明显有,而且你给出了代码,仔细检查你的数据和程序

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

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:01:09
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/4570/
本文WWW.DOC100.NET DOC100.NET版权所有。