tstring CDoc::SaveToString(CNode& rNode, bool bQualified, bool bPrettyPrint) { if (rNode.m_pDOMNode->getParentNode() == NULL || rNode.m_pDOMNode->getParentNode()->getNodeType() == xercesc::DOMNode::DOCUMENT_FRAGMENT_NODE) { FinalizeRootElement(rNode); } CNode::InternalAdjustPrefix(rNode.m_pDOMNode, bQualified); rNode.AdjustPrefix(); xercesc::DOMWriter* pWriter = GetWriter(); m_bWriter = true; if (!m_sEncoding.empty()) pWriter->setEncoding(X(m_sEncoding)); if (bPrettyPrint && pWriter->canSetFeature(xercesc::XMLUni::fgDOMWRTFormatPrettyPrint, true)) pWriter->setFeature(xercesc::XMLUni::fgDOMWRTFormatPrettyPrint, true); XMLCh* szXml = pWriter->writeToString(*(rNode.m_pDOMNode->getOwnerDocument())); tstring sXml = XC2TS( szXml ); xercesc::XMLString::release( &szXml ); return sXml; }
void CDoc::Save(const tstring& sURI, CNode& rNode, bool bQualified, bool bPrettyPrint) { if (rNode.m_pDOMNode->getParentNode() == NULL || rNode.m_pDOMNode->getParentNode()->getNodeType() == xercesc::DOMNode::DOCUMENT_FRAGMENT_NODE) { FinalizeRootElement(rNode); } CNode::InternalAdjustPrefix(rNode.m_pDOMNode, bQualified); rNode.AdjustPrefix(); xercesc::DOMWriter* pWriter = GetWriter(); m_bWriter = true; xercesc::LocalFileFormatTarget myFormatTarget(sURI.c_str()); if (!m_sEncoding.empty()) pWriter->setEncoding(X(m_sEncoding)); if (bPrettyPrint && pWriter->canSetFeature(xercesc::XMLUni::fgDOMWRTFormatPrettyPrint, true)) pWriter->setFeature(xercesc::XMLUni::fgDOMWRTFormatPrettyPrint, true); pWriter->writeNode(&myFormatTarget, *(rNode.m_pDOMNode->getOwnerDocument())); }