Quellcode durchsuchen

使用xml加载命令。

jianfeng1.wang vor 2 Jahren
Ursprung
Commit
4f708084ab
2 geänderte Dateien mit 22 neuen und 6 gelöschten Zeilen
  1. 21 5
      TCLCommand/TCLCommand/Command.cpp
  2. 1 1
      TCLCommand/TCLCommand/Command.h

+ 21 - 5
TCLCommand/TCLCommand/Command.cpp

@@ -234,12 +234,25 @@ bool TCLCommand::ParseCommandFromString(std::string str, CommandParam &cmdParam)
     return false;
 }
 
-bool TCLCommand::ParseCommandsFromXml(const TCHAR* file_name, std::vector<CommandParam>& vtCommandParams)
+bool TCLCommand::ParseCommandsFromXml(std::string strFileOrString, std::vector<CommandParam>& vtCommandParams, BOOL bFile)
 {
 	tinyxml2::XMLDocument doc;
-	if (tinyxml2::XML_SUCCESS != doc.LoadFile(file_name) ) {		
-		return false;
+	if ( bFile )
+	{
+		// 从文件中加载;
+		if (tinyxml2::XML_SUCCESS != doc.LoadFile(strFileOrString.c_str()) ) 
+		{		
+			return false;
+		}
 	}
+	else 
+	{
+		// 从文本中加载;
+		if (tinyxml2::XML_SUCCESS != doc.Parse(strFileOrString.c_str(), strFileOrString.size()) )
+		{		
+			return false;
+		}
+	}	
 
 	tinyxml2::XMLElement *pXmlRoot = NULL;
 	if ((pXmlRoot = doc.RootElement()) == NULL)
@@ -678,12 +691,15 @@ void TCLCommand::SetInternalCMDParams(DWORD dwResouceID)
     std::string data;
     if ( utils::GetResourceData(dwResouceID, _T("BIN"), data) )
     {
-        ParseCommandsFromString(data, m_vtInternalCMDParams);
+        ParseCommandsFromXml(data, m_vtInternalCMDParams, FALSE);
     }
 }
 
 void TCLCommand::SetExternalCMDParams(LPCTSTR lpFileName)
 {
     m_vtExternalCMDParams.clear();
-    ParseCommandsFromFile(lpFileName, m_vtExternalCMDParams);
+	if ( _tcsstr(lpFileName, _T(".xml")) )
+		ParseCommandsFromXml(lpFileName, m_vtExternalCMDParams);
+	else
+		ParseCommandsFromFile(lpFileName, m_vtExternalCMDParams);
 }

+ 1 - 1
TCLCommand/TCLCommand/Command.h

@@ -17,7 +17,7 @@ private:
     int ParseTimeValue(std::string strTimeInfo);
     bool ParseKeyValuePairs(std::string& strValue, std::string strPairText, const TCHAR* lpszKeyName);
     int ParseCommandsFromFile(const TCHAR* file_name, std::vector<CommandParam>& vtCommandParams);
-	bool ParseCommandsFromXml(const TCHAR* file_name, std::vector<CommandParam>& vtCommandParams);
+	bool ParseCommandsFromXml(std::string strFileOrString, std::vector<CommandParam>& vtCommandParams, BOOL bFile=TRUE);
     void ParseCommandsFromString(std::string str, std::vector<CommandParam>& vtCommandParams);
     bool ParseCommandFromString(std::string str, CommandParam &cmdParam);