Click here to Skip to main content
15,879,096 members
Articles / Mobile Apps

How to load a tree view with a large XML file (Pocket PC version of Frank Le's program)

Rate me:
Please Sign up or sign in to vote.
3.33/5 (6 votes)
17 Apr 2003CPOL 65.2K   212   24   7
Using XML on the Pocket PC is almost as easy as on a Desktop. You only need to make a few magic calls and voila, you have it!

Sample Image - CETreeView.jpg

Introduction

This is the Pocket PC version of Frank Le's, "How to load a tree view with a large XML file". I got permission from Frank to post the CE or Pocket PC version of his program. It's been a couple of months after I implemented the Pocket PC version and never had time, until now, to document and upload it. It's now over a year later, so here goes.

Initializing COM:

hr = CoInitializeEx(NULL,COINIT_MULTITHREADED);

Next, the following bit of code must be executed. But I don't remember why. It's something about document safety options. If someone does know, please post the reason.

/* Pocket PC workaround:
    Remove document safety options  */
 
 IObjectSafety* pSafety;
 DWORD  dwSupported, dwEnabled;
 if ( SUCCEEDED(document->QueryInterface( IID_IObjectSafety,
       (void**)&pSafety ) ) )
 {
  pSafety->GetInterfaceSafetyOptions(MSXML::IID_IXMLDOMDocument, 
     &dwSupported, &dwEnabled );
   pSafety->SetInterfaceSafetyOptions(MSXML::IID_IXMLDOMDocument,
     dwSupported, 0 );
 }

The following code uses the FileStream to load an XML file into the DOM. You need to get the FileStream.h file for this (included in the zip file).

VARIANT    vXMLSrc;
 VARIANT_BOOL   vSuccess;

 VariantInit( &vXMLSrc );

 /* to load an XML file from a local file use the following code */
 FileStream* fs = new FileStream;
 fs->open(strPathName);
 vXMLSrc.punkVal = fs;
 vXMLSrc.vt = VT_UNKNOWN;
 hr = document->load(vXMLSrc, &varOkay);
 if (FAILED(hr))
  return FALSE;

Lastly,

node->hasChildNodes()

is replaced with:

VARIANT_BOOL vbHasChild;
  node->hasChildNodes(&vbHasChild);
  if (vbHasChild) {

I have forgotten why, and it may not be necessary. The code does work though. I have included an ARM exe with the zip file.

I used the DOM in some of my programs here and it worked pretty well.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
Questionhow to make the application available for dialog? Pin
tianbawudiku30-Jun-06 3:12
tianbawudiku30-Jun-06 3:12 
GeneralFlash Drive Pin
auburnate26-May-04 5:43
auburnate26-May-04 5:43 
GeneralSample Pin
ponshio18-Sep-03 7:23
ponshio18-Sep-03 7:23 
Does you have a example of an application that uses xml as a database and that the application was created in embedded c++ 3.0<br />
<br />
Thanks...<br />
<br />
Ponshio :confused:

GeneralMy experience ... Pin
Daniel Strigl19-Apr-03 6:44
Daniel Strigl19-Apr-03 6:44 
Generalno ARM exe in zipfile! Pin
ferdo18-Apr-03 7:52
ferdo18-Apr-03 7:52 
GeneralRe: no ARM exe in zipfile! Pin
mark edwards18-Apr-03 8:02
mark edwards18-Apr-03 8:02 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.