Symbian (Generate XML CSenDomFragment)生成XML
XML解析是我们项目中经理要遇到的问题.
即然有XML解析当然就少不了XML的生成了.
今天我们来看看XML是如何生成的.
其实XML的生成有简单的办法我们可以自己去按格式生成.
当然系统也给我们提供了API供我们生成XML.
那就让我们看看如何处理吧.
继续SYMBIAN之路,留下脚印做个备忘了.嘎嘎!!!
//生成XML的系统方法
CSenDomFragment* pSenDomFragment = CSenDomFragment::NewL(_L8("Mark15021"));
//生成一个结点
CSenElement* Root = pSenDomFragment->AsElement().CreateElementL(_L8(""),_L8("Root"));
//set its attribute
Root->AddAttrL(_L8("width"),_L8("50"));
Root->AddAttrL(_L8("height"),_L8("50"));
//生成结点
CSenElement* Child1 = pSenDomFragment->AsElement().CreateElementL(_L8(""),_L8
("Mark1"));
Child1->AddAttrL(_L8("name"),_L8("Mark15021"));
Child1->AddAttrL(_L8("surname"),_L8("Mark15021"));
Child1->AddAttrL(_L8("author"),_L8("Mark15021"));
//生成结点
CSenElement* Child2 = pSenDomFragment->AsElement().CreateElementL(_L8(""),_L8
("Mark2"));
Child2->AddAttrL(_L8("name"),_L8("Mark15021"));
Child2->AddAttrL(_L8("surname"),_L8("Mark15021"));
Child2->AddAttrL(_L8("author"),_L8("Mark15021"));
// create child tag
CSenElement* Child3 = pSenDomFragment->AsElement().CreateElementL(_L8(""),_L8
("Date"));
TPtrC8 SetxmlParam1Content = Child3->SetContentL(_L8("Monday, January 01, 2010"));
//setting parent node and transfering ownership.
//指定结点之间的关系
CSenElement& Child11 = Root->AddElementL(*Child1);
CSenElement& Child21 = Root->AddElementL(*Child2);
CSenElement& Child31 = Root->AddElementL(*Child3);
RFile file;
//生成XML文件
if (KErrNone != file.Open(aFs, _L("c:\\data\\MarkXML"), EFileWrite))
file.Replace(aFs, _L("c:\\data\\MarkXML"), EFileWrite);
//设置XML编码格式
//可以生成unicode和ascall格式的XML
HBufC8* xml = Root->AsXmlL();
if(xml)
file.Write(xml->Des());
file.Close();
delete xml;
delete pSenDomFragment;
delete Root;
//生成XML的土方法
TBuf8 <128> startBuf;
startBuf.Append(_L8("<?xml version=\"1.0\" encoding=\"utf-8\"?>"));
startBuf.Append(_L8("\r\n<xml>"));
//xml trail
TBuf8 <32> endBuf;
endBuf.Append(_L8("\r\n</xml>"));
_LIT8(KTypeFormat,"<Type>%d</Type>");
_LIT8(KTrueNameFormat,"<Name>%S</Name>");
bufType.AppendFormat(KTypeFormat,iType);
////get name
bufTrueName.AppendFormat(KTrueNameFormat,&bufName);
//生成XML头
err = file.Write(startBuf);
err = file.Write(_L8("\r\n"));
//生成XML数据
err = file.Write(bufType);
err = file.Write(_L8("\r\n"));
err = file.Write(bufName);
//生成XML文件尾
err = file.Write(endBuf);
以上代码在N95上测试通过
XML解析是我们项目中经理要遇到的问题.
即然有XML解析当然就少不了XML的生成了.
今天我们来看看XML是如何生成的.
其实XML的生成有简单的办法我们可以自己去按格式生成.
当然系统也给我们提供了API供我们生成XML.
那就让我们看看如何处理吧.
继续SYMBIAN之路,留下脚印做个备忘了.嘎嘎!!!
//生成XML的系统方法
CSenDomFragment* pSenDomFragment = CSenDomFragment::NewL(_L8("Mark15021"));
//生成一个结点
CSenElement* Root = pSenDomFragment->AsElement().CreateElementL(_L8(""),_L8("Root"));
//set its attribute
Root->AddAttrL(_L8("width"),_L8("50"));
Root->AddAttrL(_L8("height"),_L8("50"));
//生成结点
CSenElement* Child1 = pSenDomFragment->AsElement().CreateElementL(_L8(""),_L8
("Mark1"));
Child1->AddAttrL(_L8("name"),_L8("Mark15021"));
Child1->AddAttrL(_L8("surname"),_L8("Mark15021"));
Child1->AddAttrL(_L8("author"),_L8("Mark15021"));
//生成结点
CSenElement* Child2 = pSenDomFragment->AsElement().CreateElementL(_L8(""),_L8
("Mark2"));
Child2->AddAttrL(_L8("name"),_L8("Mark15021"));
Child2->AddAttrL(_L8("surname"),_L8("Mark15021"));
Child2->AddAttrL(_L8("author"),_L8("Mark15021"));
// create child tag
CSenElement* Child3 = pSenDomFragment->AsElement().CreateElementL(_L8(""),_L8
("Date"));
TPtrC8 SetxmlParam1Content = Child3->SetContentL(_L8("Monday, January 01, 2010"));
//setting parent node and transfering ownership.
//指定结点之间的关系
CSenElement& Child11 = Root->AddElementL(*Child1);
CSenElement& Child21 = Root->AddElementL(*Child2);
CSenElement& Child31 = Root->AddElementL(*Child3);
RFile file;
//生成XML文件
if (KErrNone != file.Open(aFs, _L("c:\\data\\MarkXML"), EFileWrite))
file.Replace(aFs, _L("c:\\data\\MarkXML"), EFileWrite);
//设置XML编码格式
//可以生成unicode和ascall格式的XML
HBufC8* xml = Root->AsXmlL();
if(xml)
file.Write(xml->Des());
file.Close();
delete xml;
delete pSenDomFragment;
delete Root;
//生成XML的土方法
TBuf8 <128> startBuf;
startBuf.Append(_L8("<?xml version=\"1.0\" encoding=\"utf-8\"?>"));
startBuf.Append(_L8("\r\n<xml>"));
//xml trail
TBuf8 <32> endBuf;
endBuf.Append(_L8("\r\n</xml>"));
_LIT8(KTypeFormat,"<Type>%d</Type>");
_LIT8(KTrueNameFormat,"<Name>%S</Name>");
bufType.AppendFormat(KTypeFormat,iType);
////get name
bufTrueName.AppendFormat(KTrueNameFormat,&bufName);
//生成XML头
err = file.Write(startBuf);
err = file.Write(_L8("\r\n"));
//生成XML数据
err = file.Write(bufType);
err = file.Write(_L8("\r\n"));
err = file.Write(bufName);
//生成XML文件尾
err = file.Write(endBuf);
以上代码在N95上测试通过