TinyXML

1,从文件读,参数是路径
char            *pchDst = NULL;
if( !AntUtils::CAntStrUtils::ToANSIChar(CAStringW(strXMLFile), &pchDst, nDstLen ) )
        return false;
    string  strFileName;
    strFileName.append(pchDst, nDstLen);
    AntUtils::CAntStrUtils::FreeDst(pchDst);
    pDoc = new TiXmlDocument();
    pDoc->LoadFile(strFileName.c_str());

	pRoot = pDoc->RootElement();
	if( pRoot == NULL )
	{
        delete pDoc;
        pDoc = NULL;
		return false;
	}

2,从字符串中获取xml文件,字符串是UNICODE格式

#include "AntStrUtils.h"

#include "../AntUtils/AntStrUtils.h"

char *pchDst     = NULL;
    AntUtils::CAntStrUtils::ToUTF8( (CAStringW)strValue, &pchDst );
    pDoc = new TiXmlDocument();
    pDoc->Parse(pchDst);
    AntUtils::CAntStrUtils::FreeDst( pchDst );

    pRoot = pDoc->RootElement();
    if( pRoot == NULL )
    {
        delete pDoc;
        pDoc = NULL;
        return false;
    }

3,保存utf-8格式文件

#include "AtStrCode.h"

CAtStrCode::WriteToUTF8File( strFile, asMsgCache.GetAt(nIndex) );
4,保存节点所有内容到字符串
            TiXmlPrinter printer;  
            pItem->Accept( &printer );  
            strNodeValue = printer.CStr(); 


5,节点文本处理

CAntViewBaseFun::UTF8ToString(const_cast<char*>(pItem->Value()), strNodeName);
        CAntViewBaseFun::UTF8ToString(const_cast<char*>(pItem->GetText()), strContent);

		if( strNodeName.CompareNoCase( _T("Item") ) == 0 )
		{
            CAntViewBaseFun::UTF8ToString(const_cast<char*>(pItem->Attribute("ID")), strID);
            nID = _ttoi( strID );

            CAntViewBaseFun::UTF8ToString(const_cast<char*>(pItem->Attribute("CreatorName")), strCreatorName);
            CAntViewBaseFun::UTF8ToString(const_cast<char*>(pItem->Attribute("CreateDate")), strCreateDate);
			long			nYear	= 0;
			long			nMonth	= 0;
			long			nDay	= 0;
			long			nHour	= 0;
			long			nMin	= 0;
			long			nSecond = 0;
			COleDateTime	time;
			SYSTEMTIME		stLocal;
					
			_stscanf_s( strCreateDate, _T("%d-%d-%d %d:%d:%d"), &nYear, &nMonth,
					&nDay, &nHour, &nMin, &nSecond );
			time.SetDateTime( nYear, nMonth, nDay, nHour, nMin, nSecond );
			CAntViewBaseFun::UTCTimeToLocalTime( time, stLocal );
			strCreateDate.Format( _T("%d-%d-%d %d:%d:%d"),
									stLocal.wYear, stLocal.wMonth,
									stLocal.wDay, stLocal.wHour,
									stLocal.wMinute, stLocal.wSecond );
            anID.Add( nID );
            asCreatorName.Add( strCreatorName );
            asCreateDate.Add( strCreateDate );
            asContent.Add( strContent );
		}

6,对某一节点的属性进行遍历

TiXmlAttribute  *pAttr;
for( pAttr = pSub->FirstAttribute() ; pAttr != NULL; pAttr = pAttr->Next())
{		
	strAttrName		= pAttr->Name();			//得到属性名称
	strAttrValue	= pAttr->Value();

	m_asVarName.Add( strAttrName );
	m_asVarData.Add( strAttrValue );
}

7,CString转换为__int64

   __int64 iadf; _stscanf(sAddress.GetString(), _T("%I64d"), &iadf);
CString和其他类型之间的转换规则:  
  CString   str;   
  str.format("%d",DWORD);
  str.format("%d",WORD);
  str.format("%s",CHAR);
  str.format("%s",CHAR[]);
  str.format("%d",BOOL);
  这个可以将CString转换为BOOL:BOOL bBool = atoi(str);
  这个可以将CString转换为WORD:WORD W = _ttoi(str);
  这个可以将CString转换为DWORD:DWORD W = _ttoi(str);
  这个可以将CString转换为CHAR[]:CHAR[] W = lstrcpy(CHAR[],str);

CString和char數組之間的轉換也可以通過以下方式:

CString str;

str = "hello world";

char c[];

 CString 到char[]的轉換:WideCharToMultiByte(CP_ACP, 0, (LPWSTR)(str.GetBuffer()), -1,c, sizeof(c), NULL, NULL);
char[]到CString的轉換可以直接賦值:str = c;

8,字符串传参文件路径原始方法解析

    int nlen = WideCharToMultiByte(CP_ACP,NULL,strXMLFile,-1,NULL,0,NULL,NULL);  
    char* strMultiFile = new char[n_len];   
    WideCharToMultiByte(CP_ACP,NULL,strXMLFile,-1,strMultiFile,nlen,NULL,NULL);
    pDoc = new TiXmlDocument();  
    pDoc->LoadFile(strMultiFile);  
    delete strMultiFile;
    strMultiFile = NULL;

    pRoot = pDoc->RootElement();  
    if( pRoot == NULL )  
    {  
        delete pDoc;  
        pDoc = NULL;  
        dwUpdateType = ATUP_STATE_ERROR;
        return false;  
    }  






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值