新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     >>计算机科学论坛<<     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> XML网站展示,XML源代码,XML编程示例。 本版仅接受原创、转贴、网站展示,具体的技术交流请前往各相关版块。
    [返回] 计算机科学论坛XML.ORG.CN讨论区 - XML技术『 XML源码及示例(仅原创和转载) 』 → [求助]那位高手帮我分析一下这段代码(每一句给我加个注释)谢谢! 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 2255 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [求助]那位高手帮我分析一下这段代码(每一句给我加个注释)谢谢! 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     cocos 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:0
      积分:58
      门派:XML.ORG.CN
      注册:2005/4/19

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给cocos发送一个短消息 把cocos加入好友 查看cocos的个人资料 搜索cocos在『 XML源码及示例(仅原创和转载) 』的所有贴子 引用回复这个贴子 回复这个贴子 查看cocos的博客楼主
    发贴心情 [求助]那位高手帮我分析一下这段代码(每一句给我加个注释)谢谢!

    int DFS(MSXML2::IXMLDOMNodePtr& pNode, long treeid, char* tablename )
    {
     //遍历算法函数(深度优先搜索)
     CString sql, sql_name, sql_value;
     HRESULT hr;

     int nCount =0;
     MSXML2::IXMLDOMNodeListPtr pNodelist;
     if( pNode->hasChildNodes() )
     {
      hr = pNode->get_childNodes( &pNodelist );
      if( !SUCCEEDED( hr ) )
      return 0;

      long length = 0;
      hr = pNodelist->get_length( &length );
      for( long i = 0; i < length; i++ )
      {
       pNodelist->get_item( i, &pNode );

       CString nodename = (char*)pNode->nodeName;

       MSXML2::DOMNodeType nodeType;
       pNode->get_nodeType(&nodeType);

       if( nodename == tablename && nodeType == MSXML2::NODE_ELEMENT )
       {
        //节点值
        CString tmpValue;

        //节点属性,放在链表中
        MSXML2::IXMLDOMNamedNodeMapPtr pIXMLDOMNamedNodeMap = NULL;
        MSXML2::IXMLDOMNodePtr pAttrItem;
        hr = pNode->get_attributes(&pIXMLDOMNamedNodeMap);
        if( pIXMLDOMNamedNodeMap )
        {
         long nColCount ;
         pIXMLDOMNamedNodeMap->get_length(&nColCount);

         CString strName;
         CString strValue;
         sql_name = _T(""), sql_value = _T("");
         for( int i=0; i< nColCount; i++ )
         {
          pIXMLDOMNamedNodeMap->get_item(i,&pAttrItem);
          strName   = (char*)(_bstr_t)pAttrItem->nodeName;    
          strValue  = (char*)(_bstr_t)pAttrItem->nodeTypedValue; 
          
          AnalyzeSQL( strName, strValue, sql_name,sql_value);
         }

         sql_name.TrimRight( ',');
         sql_value.TrimRight(',');
         char buf[]  ="insert into b_jlNumber(ClassID, TreeID, %s ) values (%d, %d, %s )";

         sql.Format( buf, sql_name, 1022, treeid,  sql_value );

         CTableRow::m_pManager->GetDB()->ExecuteSQL( sql );

         nCount++;
        }
       }
       else
        nCount += DFS( pNode, treeid, tablename );
      }//end for
     }//end if

     return nCount;
    }

    bool CR_jlNumber::DoExpandCmd( int cmd, long tree,CTableDefined* pTableCtrl )
    {
     CString strPath;
     strPath.Format( "%s\\work\\*.xml", CTableRow::m_pManager->GetCurDirection()  );

     CFileDialog dlg( true, "xml", strPath, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "上报人员信息 (*.XML)|*.xml|上报人员信息(*.xml)|*.xml|" );
     if( IDOK != dlg.DoModal() )
      return false;

     CString strFilepath = dlg.GetPathName();
     
     CoInitialize(NULL);  //初始化COM 环境
     HRESULT hr;
     CString str;
     MSXML2::IXMLDOMDocumentPtr pDoc;
     hr =pDoc.CreateInstance( "Msxml2.DOMDocument.4.0" );

     if( !SUCCEEDED( hr ) )
     {
      AfxMessageBox("无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!");
      return false;
     }

     pDoc->Putasync( false );
     BOOL bResult;
     bResult = pDoc->load( strFilepath.GetBuffer(200) );//
     if( bResult == FALSE )
     {
      AfxMessageBox("加载xml文件失败!");
      return false;
     }

     int ncount = DFS( (MSXML2::IXMLDOMNodePtr&)pDoc, tree, "b_Employee" );//遍历
     CString strBuff;
     strBuff.Format( "共导入数据 %d 条", ncount );
     AfxMessageBox( strBuff );
     return true;
    };


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/6/4 11:02:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XML源码及示例(仅原创和转载) 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/7/20 12:36:17

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    50.781ms