用tinyxml 库创建并读写xml代码截取

来源:互联网 发布:网络相亲可信吗 编辑:程序博客网 时间:2024/05/16 18:59
因为自己每次写完之后都忘记了  然后又要从别的地方学习再重新写  还不如记录再这里//创建        TiXmlDocument *pXmlDocument = new TiXmlDocument(m_strFilePath.c_str());//        TiXmlDeclaration *pDeclaretion = new TiXmlDeclaration("1.0", "UTF-8","");//创建xml声明        pXmlDocument->LinkEndChild(pDeclaretion);        TiXmlElement *pXmlElement = new TiXmlElement("Symbol");        pXmlDocument->LinkEndChild(pXmlElement);            pXmlDocument->SaveFile(m_strFilePath.c_str());//读TiXmlDocument *pXmlDoc = new TiXmlDocument();    pXmlDoc->LoadFile(strFilePath.c_str());    TiXmlElement *pRootElement = pXmlDoc->RootElement();     if (pRootElement == NULL)    {        return;    }    // 第一个子节点      TiXmlElement *pSignNode = pRootElement->FirstChildElement("sign");     if (!pSignNode)    {        SAFE_DELETE(pSignNode);        return;    }    while (pSignNode != NULL)    {        CMapSingleParameter *pMapSingleParameter = new CMapSingleParameter();        if (!pMapSingleParameter)        {            SAFE_DELETE(pMapSingleParameter);            return ;        }        // text        TCHAR tcharValue[MAX_PATH * 4] = {_T('\0')};        // name        const CHAR *pszName = pSignNode->Attribute("name");        if (pszName != NULL)        {            CommonUtil::UTF8ToTCHAR(pszName,tcharValue);            pMapSingleParameter->AppendParameter(_T("name"), tcharValue);        }                // height        const CHAR *pszHeight = pSignNode->Attribute("height");        if (pszHeight != NULL)        {            CommonUtil::UTF8ToTCHAR(pszHeight,tcharValue);            pMapSingleParameter->AppendParameter(_T("height"), tcharValue);        }        //Content        const CHAR *pszContent = pSignNode->GetText();        if (pszContent != NULL)        {            CommonUtil::UTF8ToTCHAR(pszContent,tcharValue);            pMapSingleParameter->AppendParameter(_T("content"), tcharValue);        }        m_pLatelyVectorSymbol->push_back(pMapSingleParameter);                pSignNode = pSignNode->NextSiblingElement();                }    //写string strFile = m_strFilePath;        //创建文档对象    TiXmlDocument myXmlDocument;    //加载文件数据     myXmlDocument.LoadFile(strFile.c_str());    TiXmlElement *pRootElement = myXmlDocument.RootElement();     if (pRootElement == NULL)    {        return ;    }    if (pRootElement != NULL)    {        TiXmlElement *pFirstNode = pRootElement->FirstChildElement("sign");        if (pFirstNode == NULL)        {                int nSignPos = 0;            for (TVectorSymbol::iterator ite = m_pLatelyVectorSymbol->begin(); ite != m_pLatelyVectorSymbol->end(); ++ite)            {                CMapSingleParameter *pMapSingleParameter = *ite;                TiXmlElement *insertElement = new TiXmlElement("sign");                pRootElement->LinkEndChild(insertElement);                xstring strUnicode = pMapSingleParameter->GetParameterValue(_T("name"));                TCHAR tcharValue[MAX_PATH*4]= {_T('\0')};                _tcscpy(tcharValue, strUnicode.c_str());                char chUtf8[MAX_PATH*4] = {'\0'};                CommonUtil::TCHARToUTF8(tcharValue, chUtf8);                insertElement->SetAttribute("name",chUtf8);                strUnicode = pMapSingleParameter->GetParameterValue(_T("height"));                _tcscpy(tcharValue, strUnicode.c_str());                CommonUtil::TCHARToUTF8(tcharValue, chUtf8);                insertElement->SetAttribute("height",chUtf8);                strUnicode = pMapSingleParameter->GetParameterValue(_T("content"));                _tcscpy(tcharValue, strUnicode.c_str());                CommonUtil::TCHARToUTF8(tcharValue, chUtf8);                                TiXmlText *pXmlText = new TiXmlText(chUtf8);                pXmlText->SetCDATA(true);//添加格式化<![CDATA[]]>                                insertElement->LinkEndChild(pXmlText);                m_nLatelyTotal ++;                }                }                }        myXmlDocument.SaveFile(strFile.c_str());}//删除节点    string strFile = m_strFilePath;    //创建文档对象    TiXmlDocument myXmlDocument;    //加载文件数据     myXmlDocument.LoadFile(strFile.c_str());    TiXmlElement *pRootElement = myXmlDocument.RootElement();     if (pRootElement == NULL)    {        return ;    }    TiXmlElement *pSignNode = pRootElement->FirstChildElement("sign");    while (pSignNode != NULL)    {        m_nLatelyTotal --;        TiXmlElement *pSignRemoveNode = pSignNode;        pSignNode= pSignNode->NextSiblingElement("sign");        pRootElement->RemoveChild(pSignRemoveNode);            }    myXmlDocument.SaveFile(strFile.c_str());


0 0
原创粉丝点击