На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ElcnU
  
> XML под WinCE
    Подскажите, как инициализировать и использовать XML парсер из под WinCE 3.0 ?
      А делается это вот так :)

      CComPtr<IXMLDOMDocument> pXMLDoc;

      CComVariant varFileName = "//somehost/somedir/somefile.xml";

      if ( pXMLDoc.CoCreateInstance(__uuidof (DOMDocument), NULL, CLSCTX_INPROC_SERVER)!=S_OK ) {
      AfxMessageBox(_T( "Can't Create Instance of DOMDocument" ));
      return -1;
      }

      CComQIPtr<IObjectSafety, &IID_IObjectSafety> pSafety(pXMLDoc);
      DWORD dwSupported, dwEnabled;
      pSafety->GetInterfaceSafetyOptions( IID_IXMLDOMDocument, &dwSupported, &dwEnabled );
      pSafety->SetInterfaceSafetyOptions( IID_IXMLDOMDocument, dwSupported, 0 );

      pXMLDoc->put_validateOnParse(VARIANT_FALSE);
      pXMLDoc->put_resolveExternals(VARIANT_FALSE);
      pXMLDoc->put_preserveWhiteSpace(VARIANT_FALSE);
      pXMLDoc->put_async(VARIANT_FALSE);

      VARIANT_BOOL vSuccess;
      if ( pXMLDoc->load(varFileName,&vSuccess)!=S_OK ) {
      AfxMessageBox(_T("Can't load xml"));
      return -1;
      }
        2vadim_vk, будешь главным по XML :), а то тут никто ничего не знает :) шутка.
          А вот так оно парсится. Ну вдруг кому-нибудь пригодится.

          CComPtr<IXMLDOMElement> pDocElement;
          if ( pXMLDoc->get_documentElement(&pDocElement)!=S_OK ) {
          AfxMessageBox(_T("Can't get document element"));
          return -1;
          }

          typedef CComPtr<IXMLDOMNodeList> IXMLDOMNodeListPtr;
          typedef CComPtr<IXMLDOMNode> IXMLDOMNodePtr;

          IXMLDOMNodeListPtr pNodeList;
          HRESULT hr = pXMLDoc->selectNodes( _T("//ITEM/SUBITEM"), &pNodeList );

          if ( SUCCEEDED( hr )) {
          long lLen = 0;
          hr = pNodeList->get_length(&lLen);
          if ( SUCCEEDED( hr )) {
          for (int i = 0; i < lLen; i++) {
          IXMLDOMNodePtr pNode;
          pNodeList->get_item(i,&pNode);

          // Get some attribute as an example
          COleVariant vNodeValue;
          IXMLDOMElement *pNodeElm = NULL;
          hr = pNode->QueryInterface( IID_IXMLDOMElement, (void**)&pNodeElm );
          if ( SUCCEEDED( hr )) {
          pNodeElm->getAttribute( L"attr1",&vNodeValue );
          .........
          pNodeElm->getAttribute( L"attr2",&vNodeValue );
          .........
          pNodeElm->Release();
          }
          }
          }
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0250 ]   [ 15 queries used ]   [ Generated: 27.04.24, 08:27 GMT ]