Sounds
like what you need is XPath, so what you need is Pathan (free), from http://software.decisionsoft.com/.
Unfortunately the latest stable version (Pathan 1) only works with old style
xerces-c (no pointers). If you're using Xerces 2.1.0 (with pointers) (like me),
you'll have to wait until their new one comes out.
Alternatively, it's not so bad to do it with standard Xerces if you use a
DOMTreewalker . Suppose you've got a DOMDocument...
DOMNode
*rootElem,*temp;
rootElem=doc->getDocumentElement();
rootElem=doc->getDocumentElement();
walker=doc->createTreeWalker(rootElem,DOMNodeFilter::SHOW_ELEMENT,NULL,false);
// Just shows element nodes
temp=walker->firstChild();
while
(XMLString::compareString(temp->getNodeName(),XMLString::transcode("NODE1"))!=0)
temp=walker->nextSibling();
temp=walker->nextSibling();
temp=walker->firstChild();
while
(XMLString::compareString(temp->getNodeName(),XMLString::transcode("NODE2"))!=0)
temp=walker->nextSibling();
temp=walker->nextSibling();
temp=walker->firstChild();
while
(XMLString::compareString(temp->getNodeName(),XMLString::transcode("NODE3"))!=0)
temp=walker->nextSibling();
temp=walker->nextSibling();
temp=walker->firstChild();
while
(XMLString::compareString(temp->getNodeName(),XMLString::transcode("NODE4"))!=0)
temp=walker->nextSibling();
temp=walker->nextSibling();
// and
you want temp->getNodeValue()
This
assumes of course that all nodes exist. If they don't you will have to check on
the way down. Sorry if my (fairly bad) C++ isn't quite right- I'm not as good as
the regulars on this list!
David
-----Original Message-----Is there an easy way to search for a particular path in a DOM tree? Besides doing a course on graph theory.
From: Jason Jesso [mailto:[EMAIL PROTECTED]]
Sent: 31 October 2002 17:30
To: [EMAIL PROTECTED]
Subject: path searching in a DOM treeI want to search for something like: /NODE1/NODE2/NODE3/NODE4 where the name of NODE4 is XXX.
This path has several instances in the tree, but I want to find a particular one.
-- <jason/>--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
