This code is close to psuedocode so L"" is missing.
Problem was XALAN_CPP_NAMESPACE::XPathEvaluator::initialize() was missing.
After adding this things started working.
I hardly know about relation b/w Xerces object & Xalan objects. I have
tried to read in newsgroups to get more info.
Pls let me know how I am complicating.
Thanks
Ramesh
On Tue, 21 Dec 2004 09:12:40 -0800, [EMAIL PROTECTED]
<[EMAIL PROTECTED]> wrote:
> > SimpleXPathAPI & my app are different.
>
> Yes, but your's needn't be so different from the sample application. You
> have modified things which you did not need to modify.
>
> > Here is my sample code. Pls let me know if there is anything wrong.
> > I am using xerces parser because I need to read/edit/create the XML
> documents
>
> > m_prefXalanDocument =
> > m_pXercesParserLiaison->createDocument(m_pDOMDocument,0,1);
>
> m_prefXalanDocument =
> m_pXercesParserLiaison->createDocument(m_pDOMDocument,true,true);
>
> > m_pXalanContextNode =
> >
> m_pXPathEvaluator->selectSingleNode(*m_pXercesDOMSupport,m_prefXalanDocument,
> > "/catalog/book".c_str(),*m_pXalanDocumentPrefixResolver);
>
> What compiler are you using? This code cannot possibly compile, unless
> your compiler is totally broken.
>
> > m_pXObjectPtr = new
> >
> XALAN_CPP_NAMESPACE::XObjectPtr((m_pXPathEvaluator->evaluate(*m_pXercesDOMSupport,m_pXalanContextNode,
> > "child::[EMAIL PROTECTED]",*m_pXalanDocumentPrefixResolver)));
>
> XObjectPtr is a reference-counting smart pointer. You should never create
> one using new.
>
> XObjectPtr m_xobjectPtr =
> m_pXPathEvaluator->evaluate(
> *m_pXercesDOMSupport,
> m_pXalanContextNode,
> "child::[EMAIL PROTECTED]",
> *m_pXalanDocumentPrefixResolver);
>
> > prefXObject = m_pXObjectPtr->get();
> >
>
> This is unnecessary. XObjectPtr has an overloaded operator -> which
> returns a pointer to the underlying XObject instance.
>
> > if(XObject::eObjectType::eTypeNodeSet ==
> prefXObject->getType())
> > {
> > NodeRefList pTemp(prefXObject->nodeset());
> > iTempCount = pTemp.getLength();
> >
> > // iTempCount is ZERO
> > }
>
> Why are you making a copy of the NodeRefList? Do you need to save it for
> some reason?
>
> if(XObject::eObjectType::eTypeNodeSet == xobjectPtr->getType())
> {
> const NodeRefListBase& pTemp = prefXObject->nodeset();
> iTempCount = pTemp.getLength();
>
> // iTempCount is ZERO
> }
>
> Without something that will compile, and lacking input data, no one can
> possible figure out why your code is not working. If you want someone to
> help you, you need to provide a _minimal_ and _complete_ sample that
> illustrates the problem.
>
> Dave
>
--
~best~of~luck~
Ramesh Kumar