Hi

I am trying to step through the subnodes of a parent node. I have lots of
problems.

The first primary problem is that I cannot get the getNextSibling member
function to work. I can get to the first child(propone), but i cannot get to
the second one by doing a getNextSibling. I have simplified the code
snippet.

xmldoc(I took out all unnec spaces) looks like:
<root><properties><propone></propone><proptwo></proptwo></properties></root>

simplified code:                
                DOMParser Parser;
                Parser.parse(*memBufIS);                //option1:use membuf
                //Parser.parse("c:/myxml.xml"); //option2:use file
                Parser.setDoNamespaces(true);
                DOM_Document DomDoc = Parser.getDocument();
                DOM_NodeList NdLsPropTags =
DomDoc.getElementsByTagName("properties"); 
                int nPropTags;
                if ((nPropTags = NdLsPropTags.getLength())!=1) {
                        if (nPropTags==0) {
                                printf("No properties tag");
                        }       
                        else {
                                printf("More than one properties tag"); 
                        }       
                        return false;
                }
                printf("\nPropTags\t%d\n",nPropTags);
                
                DOMString dsNdNmProp,dsNdVlProp,dsNdNmNode,dsNdVlNode;
                char
*pszNdNmProp=NULL,*pszNdVlProp=NULL,*pszNdNmNode=NULL,*pszNdVlNode=NULL;
                int nNdTpProp,nNdTpNode,i=0;    
                
                DOM_Node NdProp = NdLsPropTags.item(0); 
                
                nNdTpProp=NdProp.getNodeType();
                dsNdNmProp=NdProp.getNodeName();
                pszNdNmProp = dsNdNmProp.transcode();
                dsNdVlProp = NdProp.getNodeValue();
                if (pszNdVlProp==NULL)
                        pszNdVlProp="NULL";
        
printf("\n\t%d\t%s\t%s\n",nNdTpProp,pszNdNmProp,pszNdVlProp);
                
                if (!NdProp.hasChildNodes())
                        return false;
                DOM_Node NdNode;
                
                NdNode = NdProp.getFirstChild();
                if (NdNode.isNull()) 
                        return true;
                nNdTpNode = NdNode.getNodeType();
                dsNdNmNode=NdNode.getNodeName();
                pszNdNmNode = dsNdNmNode.transcode();
                dsNdVlNode=NdNode.getNodeValue();
                pszNdVlNode = dsNdVlNode.transcode();
                if (pszNdVlNode==NULL)
                        pszNdVlNode="NULL";
        
printf("\n%d\t%d\t%s\t\t<%s>\n",i,nNdTpNode,pszNdNmNode,pszNdVlNode);
                
                i++;
                NdNode = NdProp.getNextSibling();
                if (NdNode.isNull()) //turns out to be true
                        return true; //ie no next sibling, cannot get
proptwo
                nNdTpNode = NdNode.getNodeType();
                dsNdNmNode=NdNode.getNodeName();
                pszNdNmNode = dsNdNmNode.transcode();
                dsNdVlNode=NdNode.getNodeValue();
                pszNdVlNode = dsNdVlNode.transcode();
                if (pszNdVlNode==NULL)
                        pszNdVlNode="NULL";
        
printf("\n%d\t%d\t%s\t\t<%s>\n",i,nNdTpNode,pszNdNmNode,pszNdVlNode);

                i++;
                NdNode = NdProp.getNextSibling();
                if (NdNode.isNull()) 
                        return true;
                nNdTpNode = NdNode.getNodeType();
                dsNdNmNode=NdNode.getNodeName();
                pszNdNmNode = dsNdNmNode.transcode();
                dsNdVlNode=NdNode.getNodeValue();
                pszNdVlNode = dsNdVlNode.transcode();
                if (pszNdVlNode==NULL)
                        pszNdVlNode="NULL";
        
printf("\n%d\t%d\t%s\t\t<%s>\n",i,nNdTpNode,pszNdNmNode,pszNdVlNode);




-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: 23 March 2001 11:48 PM
To: [EMAIL PROTECTED]
Subject: Re: NEWBIE:Cannot get to subnodes using getFirstChild and
getNextSibl ing



>Is there a way of getting pass these type of characters like Tabs,
>Linefeeds,etc etc.

Advance to the next sibling node.

>It would appear that the getNextSibling() function points to the same
>element(most prolly a LineFeed+tab) everytime.

You mean node rather than element. But to answer your question, consider
the following pseudocode:

     Element myProperties=myDoc.getElementByTagName("properties");
     for(Node child=myProperties.getFirstChild;
          child!=null;
          child=child.getNextSibling() )
     {
          if (child.getNodeType()==Node.ELEMENT_NODE)
          {
               // Do whatever's appropriate
          }
          else
          {
               // In your application, you may not care about anything
else.
               // If that's true, just ignore it and move on
          }
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to