1. 程式人生 > >C++ 載入.xml檔案

C++ 載入.xml檔案

///首先寫一個ProductNameConfig.xml

<?xml version="1.0" encoding="GB2312" ?>
<Root>
    <Product>
<Parameter ProductID="CY" ProductName="棉紗" />
    </Product>
</Root>

///首先需要在標頭檔案包含以下兩個標頭檔案:
#include "tinyxml.h"
#include "tinystr.h"

#define RETURN_OK 0
#define  RETURN_ERROR -1

class TiXmlElement;
class TiXmlNode;
class TiXmlDocument;

///建立一個DataSet類,下面直接寫實現部分。
//類標頭檔案中定義TiXmlDocument* pDoc;
//載入.xml檔案
int CDataSet::LoadProductInfo()
{
char chMainPath[MAX_PATH + 1] = {0};
GetModuleFileName(NULL, chMainPath, MAX_PATH);
char *pos = strrchr(chMainPath, '\\');
*(pos + 1) = '\0';
std::string strTmpPath=chMainPath;
// GetCurrentDirectory(MAX_PATH,path);
strTmpPath+="ini\\ProductNameConfig.xml";


FILE* fp = fopen(strTmpPath.c_str(),"r");
if(fp ==NULL)
{
//LOG_TRACE(LOG_ERROR_LEVEL,"INIT","Please Check %s is Existing!",strTmpPath.c_str());
return RETURN_ERROR;
}
else
{
fclose(fp);
fp=NULL;
}


if(ParseConfigFile(strTmpPath.c_str()) == RETURN_ERROR)
{
//LOG_TRACE(LOG_ERROR_LEVEL,"INIT","ParseConfigFile Failed",strTmpPath.c_str());
return RETURN_ERROR;
}
return ROHONDB_OK;
}


int CDataSet::ParseConfigFile(const char* szFileName)
{
pDoc = new TiXmlDocument(szFileName);
bool bSuccess = pDoc->LoadFile();
if (!bSuccess)
{
//LOG_TRACE(LOG_ERROR_LEVEL,"PARSEFILE","Load File Failed");
delete pDoc;
pDoc = NULL;
return RETURN_ERROR;
}


//讀取Root節點
TiXmlNode* RootNode = pDoc->FirstChild("Root");
TiXmlElement* pPluginElement = NULL;


if ((pPluginElement = RootNode->FirstChildElement("Product"))!= NULL)
{
if (ReadProductElement(pPluginElement) == RETURN_ERROR)
{
return RETURN_ERROR;
}
}
else
{
//LOG_TRACE(LOG_ERROR_LEVEL,"PARSEFILE","Product Element is not finded");
return RETURN_ERROR;
}


return RETURN_OK;
}

int CDataSet::ReadProductElement(TiXmlElement* pPLuginElement)
{
ASSERT(pPLuginElement);
TiXmlElement* pParameter=NULL;
for (pParameter=pPLuginElement->FirstChildElement("Parameter");pParameter!=NULL;pParameter=pParameter->NextSiblingElement())
{
m_mapProductNameField.insert(std::pair<std::string,std::string>(pParameter->Attribute("ProductID"),pParameter->Attribute("ProductName")));
}


if (m_mapProductNameField.size() ==0)
{
///LOG_TRACE(LOG_ERROR_LEVEL,"REDPRODUCT","Product Element size is zero");
return RETURN_ERROR;
}


return RETURN_OK;
}


相關推薦

C++ 載入.xml檔案

///首先寫一個ProductNameConfig.xml <?xml version="1.0" encoding="GB2312" ?> <Root> <Product> <Parameter ProductID="C

C# 載入xml文件檔案載入xml字串

//建立XmlDocument物件 XmlDocument xmlDoc = new XmlDocument(); //載入xml檔名 xmlDoc.Load(filename); //如果是xml字串,則用以下形式 xmlDoc.LoadXml(xmldata

《21天學通C#生成XML檔案

  using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks; namespace 生成XML檔案{ /// <summary

關於mvnen專案下hibernate mybaits打包無法載入xml檔案

maven專案打包時,如果java目錄下有xml檔案,則打包時不會載入xml檔案,但是有時我們mybatis或hibernate的xml會寫在java目錄下。 解決方案: 在專案pom檔案build中加入如下配置即可解決問題 <resources>

C#中xml檔案的操作

1.xml檔案的概念:可擴充套件性標記語言。 2.作用:用來儲存標示資料。 3.語法:以.xml作為字尾,以<?xml version=”1.0” encoding=”utf-8” ?&g

C++ 讀取XML檔案 Markup.cpp的 CMarkup 讀取XML

新增Markup.cpp和.h,使用時新增引用 bool LoadModelCfg(char* FileName) { CMarkup xml; if (!xml.Load(FileName)) { return false; } xml.ResetPos(); if (xml.

c# 操作xml檔案,新增、刪除節點

/// <summary> /// 刪除當前選擇節點 /// </summary> /// <param name="sender"></param>

Kotlin通過Id操作View,Adapter和動態載入Xml檔案也可以類似操作

如果使用kotlin,什麼butterknife繫結,Xutil註解都不需要,只需要通過id就可以操作view,非常方便,但是在使用的過程中還是遇到兩個值得記錄的問題如下: 針對adapter中通過id來操作 針對動態載入佈局通過id來操作 其實兩者本質

C#】XML檔案格式的寫入

寫入 //在記憶體中構建一個Dom物件 XmlDocument xmlDoc = new XmlDocument(); //增加一個文件說明 Xml

使用XmlDocument/XmlDataDocument類載入XML檔案時如何忽略DTD驗證

在XML檔案含有外部DTD驗證的時候,使用XmlDocument/XmlDataDocument類的Load方法會丟擲如下的例外: System.Xml.XmlException: 未找到所需的 DTD 標記。 行 m,位置 n。 我們可以採用下面的方法不去載入外部資源:

使用XmlDocument類載入XML檔案時忽略DTD驗證

這是因為要載入的xml檔案有外部的DTD驗證,解決辦法就是不去載入外部資源。 1 XmlDocument xml= newXmlDocument(); 2 xml.XmlResolver = null; 3 xml.Load(url);

在用c++讀取xml檔案時,執行時出現以下錯誤:出現未處理的“System.Xml.XmlException”型別的異常出現在 system.xml.dll 中

各位高手,我剛剛開始接觸c++,使用的是Microsoft Visual Studio 2003版本,在使用c++讀取xml檔案時,編譯已經通過,但是執行.exe程式時,老是出現這個錯誤:“未處理的“System.Xml.XmlException”型別的異常出現在 syste

mybatis載入xml檔案錯誤及其影響

一次在做一個專案的過程中,發現mybatis載入xml檔案錯誤,導致了後面所有的sql都報了這個sql語句的錯誤,一時沒有摸到頭腦,在此分析下。 在mybatis載入xml檔案的時候,會解析所有的檔案,同時把statement錯誤的檔案放到一個集合中去,程式碼如下:

Magento獲取使用者登入狀態及登入使用者資訊 /頁面載入 XML 檔案

Magento開發時經常需要獲取到當前登入管理員的使用者資訊,比如管理員的id,姓名,email地址,使用者名稱等。下面列出Magento中呼叫管理員資訊的相關函式。 $user = Mage::getSingleton('admin/session'); $userI

使用XmlDocument類載入XML檔案時如何忽略DTD驗證

錯誤提示:System.Xml.XmlException:未找到所需的 DTD 標記。 行 2,位置 3。 這是因為要載入的xml檔案有外部的DTD驗證,解決辦法就是不去載入外部資源。 1 XmlDocument xml= new XmlDocument();

c#載入xml的快速高效的演算法

xml內容:<?xml version="1.0" encoding="utf-8" ?><google>  <googleColorBorder>f6fbff</googleColorBorder>  <googleColorBG>f6fbff&l

C#解決XML檔案亂碼問題

一些英文版原始碼,用中文版VS開啟後,會出現亂碼問題。特別是把XML檔案中的英文改為中文後會顯示亂碼,解決的辦法是:1、在XML檔案的頭部加<?xml version="1.0" encoding="UTF-8"?>語句2、用記事本開啟XML檔案,點選另存為,在彈

Xerces-c DOM XML檔案的構造

Xerces中構造xml很簡單,但是想輸出就很麻煩,Xerces支援三種輸出 輸出到記憶體 輸出到標準輸出 輸出到本地檔案 下面列出用到的一些重要的類,可以查詢官網API解鎖更多的用法 1.DOMImplementation和DOMImplementat

libxml2.7.8 c++ 解析xml檔案 中文轉換

C++的XML程式設計經驗――LIBXML2庫使用指南 寫這篇文章的原因有如下幾點:1)C++標準庫中沒有操作XML的方法,用C++操作XML檔案必須熟悉一種函式庫,LIBXML2是其中一種很優秀的XML庫,而且它同時支援多種程式語言;2)LIBXML2庫的Tutorial

C#讀取XML檔案資料和把資料儲存至xml的方法

原文在百度知道中,來源於多個網友。 新浪微博:http://blog.sina.com.cn/s/blog_ad7fd0f4010180md.html (一) 儲存 var xml =XElement.Load(@"路徑");xml.Element("節點名字").AddA