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]