boost库之property_tree解析xml文件

来源:互联网 发布:阿里云域名 能退吗 编辑:程序博客网 时间:2024/05/21 21:42

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文件,只需要添加头文件定义即可。

0 0