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",tempStr, 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(),tempStr, 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(),tempStr, 99);

        m_pDocument = m_pImpl->createDocument(0,tempStr, 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;

}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值