c++ - 如何使用 ptree(boost) 遍历 XML 文件中同名的 child ?

标签 c++ xml boost

我有一个这样的 XML 文件:

 <shape name="rightellipsoid" type="instance" id="eggBase">
    <transform name="xform1">
      <translate>2.5 1.5 -4.0</translate>
      <rotate axis="X">90.0</rotate>
      <scale>1.0 0.5 1.5</scale>
      <rotate axis="Y">95.0</rotate>
    </transform>
  </shape>

我可以使用以下方法检索平移和缩放的值:

boost::optional<Vector3D> scale = v.second.get_optional<Vector3D>("scale");

注意:Vector3D是我的数据类型

但是如果我对我的旋转节点做同样的事情,它总是返回第一个值。 如何获取第二个旋转节点的值?

最佳答案

尝试这样的事情:

std::string rotate_x, rotate_y;
boost::property_tree::ptree pt;

BOOST_FOREACH( ptree::value_type const& val, pt.get_child("shape.transform") ) 
{
    if(val.first == "rotate") 
    {
        std::string temp = val.second.get_child("<xmlattr>.axis").data();

        if(temp == "X") rotate_x = val.second.data();
        if(temp == "Y") rotate_y = val.second.data();
    }
}

关于c++ - 如何使用 ptree(boost) 遍历 XML 文件中同名的 child ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19830798/

相关文章:

c++ - 排列 Qt GroupBox 标签

python - 从列表列表中删除第 n 行 - Python

xml - 有没有办法只在 go xml 包中编码 XML 开始标记?

c++ - Boost::python 使用和返回模板公开 C++ 函数

c++ - XCode 未显示 C++ 程序中的泄漏

c++ - 删除 lambda 赋值运算符的基本原理?

c++ - 从文件中读取字节并覆盖相同的字节

java - 计算 xml 中的值

boost MD5 支持?

c++ - boost 中的单元测试