Boost を使用して XML パーサーを作成する必要があります。しかし、私はいくつかの問題を抱えています。問題なくノード名にアクセスできますが、何らかの理由ですぐに機能するはずの get_value を使用してタグ内の属性にアクセスできません。たぶん、私が見つけられなかった私のコードに間違いがありますか? 見てみましょう:
void ParametersGroup::load(const boost::property_tree::ptree &pt)
{
using boost::property_tree::ptree;
BOOST_FOREACH(const ptree::value_type& v, pt)
{
name = v.second.get_value<std::string>("name");
std::string node_name = v.first;
if (node_name == "<xmlattr>" || node_name == "<xmlcomment>")
continue;
else if (node_name == "ParametersGroup")
sg.load(v.second); // Recursion to go deeper
else if (node_name == "Parameter")
{
// Do stuff
std::cout << "PARAMETER_ELEM" << std::endl;
std::cout << "name: " << name << std::endl;
std::cout << "node_name: " << node_name << std::endl << std::endl;
}
else
{
std::cerr << "FATAL ERROR: XML document contains a non-recognized element: " << node_name << std::endl;
exit(-1);
}
}
}
したがって、基本的にはタグを無視して、ParametersGroup タグにいるときはさらに深く掘り下げ、Parameter タグにいるときはデータを復元して何かを行います。しかし、「名前」がうまく取得できません。
これは私が最後にスキャンしている行の種類ですelse if
:
<Parameter name="box">
には次のstd::cout << name
ようなものが表示されます。
name: ^M
^M
^M
^M
^M
^M
これは明らかに私が求めているものではありません。
私は何を間違っていますか?どんな助けでも大歓迎です。