diff --git a/doc/html/ApacheDOMC++BindingL3.html b/doc/html/ApacheDOMC++BindingL3.html index 9db96d5fa02fd748b555e8d57261a46491eb05ad..72dda713c9e3ea7448e336a714a16157428b3015 100644 --- a/doc/html/ApacheDOMC++BindingL3.html +++ b/doc/html/ApacheDOMC++BindingL3.html @@ -4631,7 +4631,7 @@ DOMLSSerializer <td><font face="Courier New,Courier"><font size=-1>XMLCh*</font></font></td> -<td><font face="Courier New,Courier"><font size=-1>writeToString(const DOMNode* nodeToWrite) = 0;</font></font></td> +<td><font face="Courier New,Courier"><font size=-1>writeToString(const DOMNode* nodeToWrite, MemoryManager* manager = NULL) = 0;</font></font></td> </tr> <tr ALIGN=LEFT VALIGN=TOP> diff --git a/src/xercesc/dom/DOMLSSerializer.hpp b/src/xercesc/dom/DOMLSSerializer.hpp index 4b1041038652052372d9e05e0bcd17c649e80099..a763d4e94bcf8abe91e84d19f8fdce3b3e534116 100644 --- a/src/xercesc/dom/DOMLSSerializer.hpp +++ b/src/xercesc/dom/DOMLSSerializer.hpp @@ -506,13 +506,16 @@ public: * diagnostic purposes. * * @param nodeToWrite The node to be written. + * @param manager The memory manager to be used to allocate the result string. + * If NULL is used, the memory manager used to construct the serializer will + * be used. * @return Returns the serialized data, or <code>null</code> in case a * failure occured and the failure wasn't canceled by the error * handler. The returned string is always in UTF-16. * The encoding information available in DOMLSSerializer is ignored in writeToString(). * @since DOM Level 3 */ - virtual XMLCh* writeToString(const DOMNode* nodeToWrite) = 0; + virtual XMLCh* writeToString(const DOMNode* nodeToWrite, MemoryManager* manager = NULL) = 0; //@} diff --git a/src/xercesc/dom/impl/DOMLSSerializerImpl.cpp b/src/xercesc/dom/impl/DOMLSSerializerImpl.cpp index 8e17c728ddaa0baf60dd2b4e5fc10d2d5071ae66..d762084c75c52b55fdd540c0c352f149ef059d93 100644 --- a/src/xercesc/dom/impl/DOMLSSerializerImpl.cpp +++ b/src/xercesc/dom/impl/DOMLSSerializerImpl.cpp @@ -561,16 +561,18 @@ bool DOMLSSerializerImpl::writeToURI(const DOMNode* nodeToWrite, const XMLCh* ur // We don't throw DOMSTRING_SIZE_ERR since we are no longer // using DOMString. // -XMLCh* DOMLSSerializerImpl::writeToString(const DOMNode* nodeToWrite) +XMLCh* DOMLSSerializerImpl::writeToString(const DOMNode* nodeToWrite, MemoryManager* manager /*= NULL*/) { - MemBufFormatTarget destination(1023, fMemoryManager); + if(manager==NULL) + manager = fMemoryManager; + MemBufFormatTarget destination(1023, manager); bool retVal; bool bBOMFlag=getFeature(BYTE_ORDER_MARK_ID); setFeature(BYTE_ORDER_MARK_ID, false); try { - DOMLSOutputImpl output(fMemoryManager); + DOMLSOutputImpl output(manager); output.setByteStream(&destination); output.setEncoding(XMLUni::fgUTF16EncodingString); retVal = write(nodeToWrite, &output); @@ -590,7 +592,7 @@ XMLCh* DOMLSSerializerImpl::writeToString(const DOMNode* nodeToWrite) } setFeature(BYTE_ORDER_MARK_ID, bBOMFlag); - return (retVal ? XMLString::replicate((XMLCh*) destination.getRawBuffer(), fMemoryManager) : 0); + return (retVal ? XMLString::replicate((XMLCh*) destination.getRawBuffer(), manager) : 0); } // diff --git a/src/xercesc/dom/impl/DOMLSSerializerImpl.hpp b/src/xercesc/dom/impl/DOMLSSerializerImpl.hpp index 77c55e245ca71872a16e88bdf5c952f39c2c416a..ed110e2d1d442da1512447fe75e625a1b559bdcb 100644 --- a/src/xercesc/dom/impl/DOMLSSerializerImpl.hpp +++ b/src/xercesc/dom/impl/DOMLSSerializerImpl.hpp @@ -72,7 +72,7 @@ public: /** * The caller is responsible for the release of the returned string */ - virtual XMLCh* writeToString(const DOMNode* nodeToWrite); + virtual XMLCh* writeToString(const DOMNode* nodeToWrite, MemoryManager* manager = NULL); virtual void release(); //@}