Thanks David for helping out !!

Few more questions: What advantage XSLT Stylesheet approach has over Xerces-C 
Source tree/Xalan C Wrappers approach ?

Also we are able to achieve the objective through XSLT Stylesheet but 
requirement is that we need to implement it by using the Xerces-C
source tree with the Xalan-C wrappers itself !! We saw couple of posting on 
this group and tried to implement it as following, It isn't working !! Also 
Classes DOMParser, DOM_Document, XercesDocumentBridge are all deprecated.  So 
what classes should be used instead of these. Also How can we implement the 
requirement using Xerces-C Source tree with Xalan-C wrapper approach !!

   DOMParser                      parser;
   parser.parse(InputSource);
   DOM_Document            xercesDocument = parser.getDocument();
   XercesDOMSupport     domSupport;
   XercesParserLiaison   parserLiaison(domSupport);

   XalanDocument* const       xalanDoc =   
parserLiaison.createDocument(xercesDocument);
   XercesDocumentBridge*   doc = parserLiaison.mapDocument(xalanDoc);
   XalanNodeList*      nl = doc->getChildNodes();
   const unsigned int  count = nl->getLength();

   for (unsigned int i = 0; i < count; ++i)
   {
       XalanNode* const  current = nl->item(i);
       DOM_Node          xercesNode(doc->mapNode(current));

       // Change the Node Value
   }

________________________________________
From: David Bertoni [EMAIL PROTECTED]
Sent: Wednesday, August 01, 2007 9:00 AM
To: [email protected]
Subject: Re: Xalan (with Xerces) - Modify a value at a Node

Vikram A K Gupta wrote:
> Hi All,
>
> Background
> - We are developing a generic cross reference task for a middleware 
> application.
> - We will be processing multiple XML formats and the plan is to have a single 
> instance of the new cross reference task.
> - We plan on configuring XPATH rules to extract a value (extraction is 
> processed by another task and is complete)
> - After obtaining the value from the XML, we will do a cross reference 
> look-up via a database and then look to repopulate the new value back in the 
> msg via the original XPATH rule,
>
> The issue we are having is around the re-insertion of the value.
> Approach that we are using:
>                1) XercesLiaisonParser to parse message
>                2) XPathEvaluator to identify a particular node
>                3) XalanNode::setNodeValue to modify the value
> But we are getting 'Unknown exception' when i try to do 
> XalanNode::setNodeValue. Any pointers to resolve it ?
> Following is code snippet but it is failing with the UNKNOWN EXCEPTION
It should not an "unknown" exception, it should be a XalanDOMException.
Here's a snippet from the source code:

void
XalanSourceTreeElement::setNodeValue(const XalanDOMString&              /* 
nodeValue */)
{
        throw XalanDOMException(XalanDOMException::NO_MODIFICATION_ALLOWED_ERR);
}

>
> Any clue how to resolve it and also an alternative approach to achieve the 
> requirement !!
>
> try{
>
>     // We'll use these to parse the XML file.
>     XercesDOMSupport theDOMSupport;
>     XercesParserLiaison theLiaison(theDOMSupport);
>
>     // Create an input source...
>     const MemBufInputSource theInputSource( reinterpret_cast<const 
> XMLByte*>(message.c_str()),
>     XalanDOMString::length(message.c_str()),
>     "SourceXML",
>     false );
>
>     // Parse the XML Stream
>     XalanDocument* const theDocument = 
> theLiaison.parseXMLStream(theInputSource);
>     XPathEvaluator      theEvaluator;
>     XalanNode* const theContextNode = theDocument->getDocumentElement();
>
>     //Retrieve the XalanNode for the compiled XPath
>     XalanNode* pXalanNode, *pConstNode = NULL;
>     pConstNode =  theEvaluator.selectSingleNode (theDOMSupport,
>     theContextNode,
>     *m_compiledXPATH);
>
>     XalanDOMString xalanDOMString("NewValue");
>     pConstNode->setNodeValue(xalanDOMString);    // UNKNOWN EXCEPTION BEING 
> THROWN
>
>     }
>     catch(const XalanDOMException& xde)
>     {
>     }
>     catch(const DOMException& de)
>     {
>     }
>     catch (...) // UNKNOWN EXCEPTION BEING CAUGHT HERE
>     {
>     }
Unless the node is a null pointer, and you're not checking for that, I
don't know why you're getting an unknown exception.  Often, running your
code in a debugger will help with determining what's wrong.

However, your approach will not work, as the Xalan-C source tree is not
mutable.  The typical way to handle this is to either use the Xerces-C
source tree with the Xalan-C wrappers, or write an XSLT stylesheet that
does the transformation, changing the values as appropriate.

Dave

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


**************** CAUTION - Disclaimer *****************
This e-mail contains PRIVILEGED AND CONFIDENTIAL INFORMATION intended solely 
for the use of the addressee(s). If you are not the intended recipient, please 
notify the sender by e-mail and delete the original message. Further, you are 
not to copy, disclose, or distribute this e-mail or its contents to any other 
person and any such actions are unlawful. This e-mail may contain viruses. 
Infosys has taken every reasonable precaution to minimize this risk, but is not 
liable for any damage you may sustain as a result of any virus in this e-mail. 
You should carry out your own virus checks before opening the e-mail or 
attachment. Infosys reserves the right to monitor and review the content of all 
messages sent to or from this e-mail address. Messages sent to or from this 
e-mail address may be stored on the Infosys e-mail system.
***INFOSYS******** End of Disclaimer ********INFOSYS***

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

Reply via email to