Xerces 序列化XML
今天继续学习Xerces序列化XML,保存到xml文件和打印。 class XmlSerializer { public: XmlSerializer(); ~XmlSerializer(); voidAddNode(string nodeName,string nodeValue); voidSave(string fileName); voidPrint(); voidCreateDocument(string rootName); protected: private: DOMDocument *m_pDocument; DOMNode *m_pCurNode; DOMNode *m_pRootNode; DOMLSSerializer *m_pSerializer; DOMImplementation *m_pImpl; }; XmlSerializer::XmlSerializer() { XMLCh tempStr[100]; XMLString::transcode("LS",tempStr,99); m_pImpl =DOMImplementationRegistry::getDOMImplementation(tempStr); m_pSerializer =((DOMImplementationLS*)m_pImpl)->createLSSerializer(); XMLString::transcode("range",99); DOMImplementation* impl =DOMImplementationRegistry::getDOMImplementation(tempStr); } XmlSerializer::~XmlSerializer() { m_pSerializer->release(); } voidXmlSerializer::AddNode( string nodeName,string nodeValue ) { if(m_pDocument) { DOMElement *pElement =m_pDocument->createElement(XMLString::transcode(nodeName.c_str())); DOMText *pTextNode =m_pDocument->createTextNode(XMLString::transcode(nodeValue.c_str())); pElement->appendChild(pTextNode); m_pCurNode->appendChild(pElement); } } voidXmlSerializer::Save( string fileName ) { XMLCh tempStr[100]; XMLString::transcode(fileName.c_str(),99); m_pSerializer->writeToURI(m_pDocument,tempStr/*XMLString::transcode(fileName.c_str)*/); } voidXmlSerializer::Print() {
if(m_pSerializer->getDomConfig()->canSetParameter(XMLUni::fgDOMWRTDiscardDefaultContent,true)) m_pSerializer->getDomConfig()->setParameter(XMLUni::fgDOMWRTDiscardDefaultContent,true); if(m_pSerializer->getDomConfig()->canSetParameter(XMLUni::fgDOMWRTFormatPrettyPrint,true)) m_pSerializer->getDomConfig()->setParameter(XMLUni::fgDOMWRTFormatPrettyPrint,true); XMLFormatTarget *myFormTarget = new StdOutFormatTarget(); DOMLSOutput* theOutput =((DOMImplementationLS*)m_pImpl)->createLSOutput(); theOutput->setByteStream(myFormTarget); m_pSerializer->write(m_pDocument,theOutput); theOutput->release(); deletemyFormTarget; } voidXmlSerializer::CreateDocument( string rootName ) { XMLCh tempStr[100]; XMLString::transcode(rootName.c_str(),99); m_pDocument = m_pImpl->createDocument(0,0); m_pRootNode =m_pDocument->getDocumentElement(); m_pCurNode = m_pRootNode; } int main(int argc,char*argv[]) { try { XMLPlatformUtils::Initialize(); cout<<"Initialize success..."<<endl;
XmlSerializer *pserializer = new XmlSerializer; pserializer->CreateDocument("Book"); pserializer->AddNode("Name","C++"); pserializer->AddNode("price","69.5"); pserializer->AddNode("writer","hhh"); pserializer->Print(); pserializer->Save("Book.xml"); } catch (const XMLException& toCatch) { return 1; } XMLPlatformUtils::Terminate(); system("pause"); return 0; }
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |