symbian 创建 xml

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上测试通过
posted @ 2010-07-15 18:10  zziss  阅读(263)  评论(1编辑  收藏  举报