using namespace xercesc;
using namespace std;
-AbstractDOMCachingXMLObject::AbstractDOMCachingXMLObject() : m_dom(NULL), m_document(NULL)
+AbstractDOMCachingXMLObject::AbstractDOMCachingXMLObject() : m_dom(nullptr), m_document(nullptr)
{
}
AbstractDOMCachingXMLObject::AbstractDOMCachingXMLObject(const AbstractDOMCachingXMLObject& src)
- : AbstractXMLObject(src), m_dom(NULL), m_document(NULL)
+ : AbstractXMLObject(src), m_dom(nullptr), m_document(nullptr)
{
}
void AbstractDOMCachingXMLObject::setDOM(DOMElement* dom, bool bindDocument) const
{
- m_dom=dom;
- if (dom) {
- if (bindDocument) {
- setDocument(dom->getOwnerDocument());
- }
+ m_dom = dom;
+ if (dom && bindDocument) {
+ DOMDocument* doc = dom->getOwnerDocument();
+ setDocument(doc);
+ DOMElement* documentRoot = doc->getDocumentElement();
+ if (!documentRoot)
+ doc->appendChild(dom);
+ else if (documentRoot != dom)
+ doc->replaceChild(dom, documentRoot);
}
}
string qname=getElementQName().toString();
m_log.debug("releasing cached DOM representation for (%s)", qname.empty() ? "unknown" : qname.c_str());
}
- setDOM(NULL);
+ setDOM(nullptr);
}
}
if (getDOM()) {
DOMDocument* cloneDoc = doc;
if (!cloneDoc)
- cloneDoc=DOMImplementationRegistry::getDOMImplementation(NULL)->createDocument();
+ cloneDoc=DOMImplementationRegistry::getDOMImplementation(nullptr)->createDocument();
try {
return static_cast<DOMElement*>(cloneDoc->importNode(getDOM(),true));
}
m_log.error("DOM clone failed: %s", temp.get());
}
}
- return NULL;
+ return nullptr;
}
XMLObject* AbstractDOMCachingXMLObject::clone() const
janitor.release(); // safely transferred
return ret;
}
- return NULL;
+ return nullptr;
}
void AbstractDOMCachingXMLObject::detach()
if (parent && parent->m_document) {
// Transfer control of document to me...
setDocument(parent->m_document);
- parent->m_document = NULL;
+ parent->m_document = nullptr;
}
// The rest is done by the base.
AbstractXMLObject::detach();