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

    >> XML网站展示,XML源代码,XML编程示例。 本版仅接受原创、转贴、网站展示,具体的技术交流请前往各相关版块。
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 XML源码及示例(仅原创和转载) 』 → 贴一个vc++.net做的加载查询xml文件的例子 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 3630 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 贴一个vc++.net做的加载查询xml文件的例子 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     haomeng1999 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:13
      积分:109
      门派:XML.ORG.CN
      注册:2005/3/25

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给haomeng1999发送一个短消息 把haomeng1999加入好友 查看haomeng1999的个人资料 搜索haomeng1999在『 XML源码及示例(仅原创和转载) 』的所有贴子 引用回复这个贴子 回复这个贴子 查看haomeng1999的博客楼主
    发贴心情 贴一个vc++.net做的加载查询xml文件的例子

    里面有一个xml文件和xsl文件,xsl文件把xml文件格式化为html格式。
    对xml的操作已经封装成类了
    欢迎提出宝贵意见

    但是,如何上传文件呢?


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/3/25 14:39:00
     
     haomeng1999 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:13
      积分:109
      门派:XML.ORG.CN
      注册:2005/3/25

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给haomeng1999发送一个短消息 把haomeng1999加入好友 查看haomeng1999的个人资料 搜索haomeng1999在『 XML源码及示例(仅原创和转载) 』的所有贴子 引用回复这个贴子 回复这个贴子 查看haomeng1999的博客2
    发贴心情 
    #pragma once

    /*
     Author: 郝猛
     Date: 2005-03-25
    */
    class CXMLWrapper
    {
    private:
     CComPtr<IXMLDOMDocument> spXMLDOM;// 代表配置文件文档指针
    public:
     DWORD loadXMLDoc(
          const char * pchFilePath // [in]表示文件路径的参数
         );// 加载xml配置文件的函数

     DWORD findValue(  
          const char * pchType, // [in]类型,请参见xml配置文件,可以取4个值:apdu,file,usat,stat
          const char * pchId,  // [in]xml元素的id值,
          char * pchValue   // [out]需要得到的值
         );// 由健取对应值的函数
     CXMLWrapper(void);
     ~CXMLWrapper(void);
    };
    以上是头文件
    #include "StdAfx.h"
    #include ".\xmlwrapper.h"

    #define   LENGTH_OF_XPATH   50
    #define   LENGTH_OF_ID   10

    /*
     Author: 郝猛
     Date: 2005-03-25
    */
    CXMLWrapper::CXMLWrapper(void)
    {
     HRESULT hr;
     // 初始化com库
     CoInitialize(NULL);
     
     // 创建dom文档实例
     hr=spXMLDOM.CoCreateInstance(_uuidof(DOMDocument));
    }

    /*
     Author: 郝猛
     Date: 2005-03-25
    */
    CXMLWrapper::~CXMLWrapper(void)
    {
     if( spXMLDOM.p != NULL )
      spXMLDOM.Release();
     CoUninitialize();
    }

    /*
     Author: 郝猛
     Date: 2005-03-25
    */
    DWORD CXMLWrapper::loadXMLDoc( const char * pchFilePath )
    {
     HRESULT hr;
     VARIANT_BOOL bSuccess=false;
     hr=spXMLDOM->load(CComVariant(pchFilePath),&bSuccess);
     if( hr == S_OK )
     {
      return 0;
     }
     else
      return 1;
    }

    /*
     Author: 郝猛
     Date: 2005-03-25
    */
    DWORD CXMLWrapper::findValue(
            const char * pchType, // 输入参数:类型:
            const char * pchId,   // 输入参数:健值
            char * pchValue    // 输出参数:字符串值
            )
    {
     CComQIPtr<IXMLDOMNodeList> spIDOMNodeList; // 结点列表
     CComQIPtr<IXMLDOMNodeList> spIDOMElementList;
     CComQIPtr<IXMLDOMNode> spIDOMNode;   // 单个结点
     CComQIPtr<IXMLDOMNode> spIDOMChildnode;  // 子结点
     CComQIPtr<IXMLDOMNode> spIXMLChildNode;  // 新的子结点,用于替换
     CComQIPtr<IXMLDOMNode> spIDOMChildelement; // 新的元素
     CComQIPtr<IXMLDOMElement> spXMLChildElement;

     CComBSTR bstrValue;
     
     long lNumber = 0;// 满足条件的节点数目
     long lNumElement = 0; // 满足条件的元素数目
     HRESULT hr;

     // 先查找该结点,如果类型为apdu那么结点名称为apduitem
     // 如果类型为usat,那么结点名称为usatitem
     // 先组合一个xpath,如果查询的apduitem节点的id属性为"B0"
     // 那么xpath表达式为:protocol/apdu/apduitem[@id='B0']
     //
     unsigned char chXPath[LENGTH_OF_XPATH] = "protocol/";
     unsigned char chXPath_temp[LENGTH_OF_XPATH] = "";
     unsigned char chTemp[LENGTH_OF_ID] = "";
     unsigned char chTemp_short[LENGTH_OF_ID] = "";
     char chStatvalue[3] = "";
     size_t  sizeLength = 0;

     if( pchType == NULL || pchId == NULL )
      return 1;
     
     try{
      // assemble the xpath statement
      strcat( (char *)chXPath, pchType ); // apdu, usat or file?
      strcat( (char *)chXPath, "/" );
      strcat( (char *)chXPath, pchType );
      strcat( (char *)chXPath, "item[@id='" );
      strcat( (char *)chXPath, pchId );
      strcat( (char *)chXPath, "']" );

      CComBSTR bstrXPath((LPCSTR)chXPath);// 转换成BSTR类型

      // xml文档已经载入,现在开始查找结点
      hr = spXMLDOM->selectNodes( bstrXPath, &spIDOMNodeList );
      SUCCEEDED(hr) ? 0 : throw hr;

      hr = spIDOMNodeList->get_length(&lNumber);// 得到符合要求的节点数目
      if( SUCCEEDED( hr ) )
      {
       if( lNumber != 1 )
        throw hr;
       hr = spIDOMNodeList->get_item(0, &spIDOMNode);
       if( SUCCEEDED( hr ) )
       {
        spIDOMNode->get_text(&bstrValue);
        USES_CONVERSION;

        strcpy( pchValue, W2T( bstrValue.m_str ) );

       }

      }
     
     }
     catch(...)
     {

      return 1;
     }

     return 0;

    }
    以上是cpp文件

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

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

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