1.首先看下property_tree对于中文的支持性:
对xml文件:
<NetworkAddressing>
<中文节点>中文</中文节点>
<EnglishNode>中文English</EnglishNode>
</NetworkAddressing>
try
{
ptree pt;
CStringA xmlPath = "E:\\Temp\\TestProject\\中文文件夹\\中文xml文件.xml";
const char* xmlpath = xmlPath;
const std::string strpath = xmlpath;
read_xml(strpath,pt);//中文路径可以打开文件
std::string nodepath = "NetworkAddressing.EnglishNode";
std::string nodename = pt.get<std::string>(nodepath);//中文部分乱码
nodepath = "NetworkAddressing.中文节点";
nodename = pt.get<std::string>(nodepath);//抛出异常
return 0;
}
catch(...)
{
return 0;
}
或
try
{
wptree pt;
CStringA xmlPath = "E:\\Temp\\TestProject\\中文文件夹\\中文xml文件.xml";
const char* xmlpath = xmlPath;
const std::string strpath = xmlpath;
read_xml(strpath,pt);//中文路径可以打开文件
std::wstring nodepath = L"NetworkAddressing.EnglishNode";
std::wstring nodename = pt.get<std::wstring>(nodepath);//中文部分乱码
nodepath = L"NetworkAddressing.中文节点";
nodename = pt.get<std::wstring>(nodepath);//抛出异常
return 0;
}
catch(...)
{
return 0;
}
可以看出property_tree对xml文件中的中文支持并不好,不能用于解析包含中文的xml文件。
2.使用boost库的property_tree并不需要添加boost库的lib文件,只需要添加头文件定义即可。