2014-12-15 1 views
0

나는 XML 리더/라이터에서 작업 해왔고, 그렇게하기 위해 부스트의 속성 트리를 사용했다.부스트의 속성 트리를 사용하여 XML 헤더 추가하기

모든 것이 작동하고 출력 파일에 한 가지만 빠져 있습니다. 파일 맨 위에 두 개의 헤더 태그를 추가하고 싶습니다.

<!-- Custom stylesheet --> 
<?xml-stylesheet type="text/xsl" href="browser_view.xslt"?> 
<!-- Authentic View --> 
<?xmlspysps authentic_view.sps?> 

사람이 알고 있나요 : 이미 거기에 하나 아래 두를 추가 할, 그러나

<?xml version="1.0" encoding="UTF-8" standalone="no" ?> 

: 지금, 유일한 헤더가 자동으로 부스트의 write_xml() 기능에 의해 쓰여진이 하나입니다 Boost로 파일을 생성 한 후 파일을 편집하지 않고 어떻게 할 수 있습니까?

+0

단어는 "처리 명령"입니다. 그리고 나는 당신이 할 수 없다는 것을 확신한다. (왜 그들이 그것을 구현할 것인가? 결국 Boost Xml 라이브러리는 없다.) – sehe

+0

@sehe 글쎄, write_xml() 함수가 있는데 왜 그렇게 될 수 없을까? – Nepho

+0

xml을 쓰지 않기 때문에! 그것은 속성 트리를 씁니다. (duh) (XML의 하위 집합 인 형식으로 작성되었지만 다른 XML 기능이 있어야 함을 의미하지는 않습니다) – sehe

답변

2

단어는 "처리 명령"입니다. 그리고 나는 당신이 할 수 없다고 확신한다. (왜 그들은 그것을 구현할 것인가? 결국 Boost Xml 라이브러리는 없다).

xml_writer_settings을 두 번 확인한 후에는 실제로 처리 명령의 인쇄를 제어하는 ​​것이 없습니다 (그렇지 않으면 사용자가 직접 인쇄물을 인쇄하지 않고 대신 전체 인쇄물을 인쇄 할 수 있습니다).

#include <boost/property_tree/ptree.hpp> 
#include <boost/property_tree/xml_parser.hpp> 
#include <iostream> 

#include <pugixml.hpp> 

int main() { 

    std::stringstream ss; 

    { 
     boost::property_tree::ptree pt; 
     pt.add("demo", "bla"); 
     boost::property_tree::xml_parser::write_xml(ss, pt); 
    } 

    { 
     pugi::xml_document doc; 
     doc.load(ss); 

     auto pi = doc.prepend_child(pugi::xml_node_type::node_pi); 
     pi.set_name("xmlspysps"); 
     pi.set_value("authentic_view.sps"); 

     pi = doc.prepend_child(pugi::xml_node_type::node_pi); 
     pi.set_name("xml-stylesheet"); 
     pi.set_value("type=\"text/xsl\" href=\"browser_view.xslt\""); 

     doc.save_file("test.xml"); 
    } 
} 

은 저장 :

여기 PugiXML 그것에 대한 필자의 당신이 정말로 단지 ptree를 직렬화하려면 끔찍하게 비효율적 물론

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="browser_view.xslt"?> 
<?xmlspysps authentic_view.sps?> 
<demo>bla</demo> 

-하지만 분명히 당신은 을 아니에요 그냥 연재 중입니다. 마크 업 중이며 마크 업 라이브러리가 필요하며 XML 가능 라이브러리가 필요합니다.

+0

답해 주셔서 감사합니다.하지만 불행히도 외부 lib를 사용할 수 없습니다. – Nepho