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;
}