/**\r
* Extension of AbstractXMLObject that implements a DOMCachingXMLObject.\r
*/\r
- class XMLTOOL_API AbstractDOMCachingXMLObject : public virtual AbstractXMLObject, public virtual DOMCachingXMLObject\r
+ class XMLTOOL_API AbstractDOMCachingXMLObject : public AbstractXMLObject, public DOMCachingXMLObject\r
{\r
public:\r
virtual ~AbstractDOMCachingXMLObject();\r
/**\r
* @see DOMCachingXMLObject::getDOM()\r
*/\r
- const DOMElement* getDOM() const {\r
+ DOMElement* getDOM() const {\r
return m_dom;\r
}\r
\r
/**\r
* @see DOMCachingXMLObject::setDOM()\r
*/\r
- void setDOM(DOMElement* dom) {\r
- m_dom=dom;\r
- }\r
+ void setDOM(DOMElement* dom, bool bindDocument=false);\r
\r
/**\r
* @see DOMCachingXMLObject::setDocument()\r
*/\r
- DOMDocument* setDocument(DOMDocument* doc) {\r
- DOMDocument* ret=m_document;\r
+ void setDocument(DOMDocument* doc) {\r
+ if (m_document)\r
+ m_document->release();\r
m_document=doc;\r
- return ret;\r
}\r
\r
/**\r
* @see DOMCachingXMLObject::releaseDOM()\r
*/\r
- void releaseDOM();\r
+ virtual void releaseDOM();\r
\r
/**\r
* @see DOMCachingXMLObject::releaseParentDOM()\r
*/\r
- void releaseParentDOM(bool propagateRelease=true);\r
+ virtual void releaseParentDOM(bool propagateRelease=true);\r
\r
/**\r
* @see DOMCachingXMLObject::releaseChildrenDOM()\r
*/\r
- void releaseChildrenDOM(bool propagateRelease=true);\r
+ virtual void releaseChildrenDOM(bool propagateRelease=true);\r
\r
/**\r
* A convenience method that is equal to calling releaseDOM() then releaseParentDOM(true).\r
}\r
\r
/**\r
- * A convenience method that is equal to calling releaseDOM() then releaseChildrenDOM(true).\r
+ * A convenience method that is equal to calling releaseChildrenDOM(true) then releaseDOM().\r
*/\r
void releaseThisAndChildrenDOM() {\r
if (m_dom) {\r
- releaseDOM();\r
releaseChildrenDOM(true);\r
+ releaseDOM();\r
}\r
}\r
\r
XMLCh* newString = XMLString::replicate(newValue);\r
XMLString::trim(newString);\r
\r
- if (oldValue && !newValue || !oldValue && newValue || XMLString::compareString(oldValue,newValue))\r
+ if (!XMLString::equals(oldValue,newValue))\r
releaseThisandParentDOM();\r
\r
return newString;\r
* @param namespaceURI the namespace the element is in\r
* @param elementLocalName the local name of the XML element this Object represents\r
*/\r
- explicit AbstractDOMCachingXMLObject(const XMLCh* namespaceURI, const XMLCh* elementLocalName)\r
- : AbstractXMLObject(namespaceURI,elementLocalName), m_dom(NULL), m_document(NULL) {}\r
+ AbstractDOMCachingXMLObject(const XMLCh* namespaceURI=NULL, const XMLCh* elementLocalName=NULL, const XMLCh* namespacePrefix=NULL)\r
+ : AbstractXMLObject(namespaceURI,elementLocalName, namespacePrefix), m_dom(NULL), m_document(NULL) {}\r
\r
private:\r
DOMElement* m_dom;\r