2011-11-14 2 views
2

XML 파일에서 boost :: property_tree :: ptree를로드합니다. 다음과 같이 보입니다.boost :: propertytree의 childnodes를 반복하는 방법, 이것들에 childs 자체가있는 경우는?

<bla> 
    <foo> 
     <element id="1" type="..." path="..."/> 
     <element id="2" type="..." path="..."/> 
     <element id="3" type="..." path="..."/> 
     <otherelement/> 
    </foo> 
</bla> 

read_xml을 사용하여 속성 트리에로드합니다. 이제 element 태그와 유사한 구조체가 포함 된 벡터를 작성하려고합니다. 나는 다음과 같이 할 수있다 :

BOOST_FOREACH(ptree::value_type& node, tree.get_child("bla.foo")) 
{ 
    if (node.first == "element") 
    { 
       ... 
    } 
} 

지금까지는 좋았지 만, 요소에서 데이터를 가져 오는 데 문제가있다. node.second에 포함되어 있어야하지만 어떻게 올바르게 액세스 할 수 있습니까? node.second.get("xmlattr.type")가 작동하지 않습니다.

답변

0

올바른 방법으로 Google-Fu를 사용한 후 this blogentry에 직접 답을 찾았습니다. 올바른 방법은 node.second.get<std::string>("<xmlattr>.type")입니다. 나는 xmlattr-thing이 잘못되었다는 것을 제외하고는 컴파일러 오류를 피할 수있는 방법은 템플릿 구문을 사용하는 것입니다.