1

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

これは明らかに私が求めているものではありません。

私は何を間違っていますか?どんな助けでも大歓迎です。

4

1 に答える 1