2017-11-07 2 views
0

부스트 속성 트리를 사용하여 멋진 XML 파일을 작성하면 모든 것이 잘 작동하지만 ... 어떻게 든 특정 블록이 XML 파일의 시작 부분에 있는지 확인하고 싶습니다. 이 블록은 소프트웨어 및 일부 일반 설정에 대한 일반적인 블록이며이 블록이 처음부터 인간 독자에게는 유용 할 것입니다. 불행히도이 블록이 항상 처음 쓰여지는지 확신 할 수 없습니다. 또 다른 쉬운 해결책이나 해결 방법이 있습니까?boost :: property_tree 요소의 순서 변경

답변

1

그냥 insert 사용

ptree pt; 

pt.add("a.c.d", "hello"); 
pt.add("a.e", "world"); 
pt.add("a.b", "bye"); 

write_xml(std::cout, pt, boost::property_tree::xml_writer_make_settings<std::string>(' ', 2)); 

인쇄

<?xml version="1.0" encoding="utf-8"?> 
<a> 
    <c> 
    <d>hello</d> 
    </c> 
    <e>world</e> 
    <b>bye</b> 
</a> 

를 특정 위치에 노드를 삽입 insert 사용 :

// let's move `b` to the start: 
ptree pt; 

pt.add("a.c.d", "hello"); 
pt.add("a.e", "world"); 
auto& a = pt.get_child("a"); 
a.insert(a.begin(), {"b", ptree{"bye"}}); 

write_xml(std::cout, pt, boost::property_tree::xml_writer_make_settings<std::string>(' ', 2)); 

인쇄

<?xml version="1.0" encoding="utf-8"?> 
<a> 
    <b>bye</b> 
    <c> 
    <d>hello</d> 
    </c> 
    <e>world</e> 
</a> 
+0

감사합니다. 정확하게 필요한 것입니다. – user7431005

관련 문제