xml 구성 파일을 읽고 쓰려면 boost::property_tree
을 사용하고 있습니다. 내 코드에서 일부 태그의 값을 변경하고 합리적인 XML 서식 (새 줄, 들여 쓰기 등)을 사용하여 파일에 다시 써야합니다.부스트 속성 트리 (XML)가 공백 행을 제거합니다.
현재 내가
std::fstream fs("filename");
boost::property_tree::ptree pt;
bpt::xml_parser::read_xml(fs,pt);
// replace value
pt.erase("tagname");
pt.put("tagname",newval);
bpt::xml_parser::xml_writer_settings<char> xmlstyle(' ',4);
bpt::xml_parser::write_xml("filename",pt,std::locale(),xmlstyle);
을 사용하고하지만 태그가 삭제 될 때마다, 그것은 빈 줄을 남겨 몇 가지 반복 후 XML을 읽을 수 없게 것으로 보인다. 부스트를 사용하여 속성 트리 자체 또는 결과 XML 파일에서 빈 줄을 제거하는 방법이 있습니까?
전체 파일을 읽고 구문 분석하여 줄 바꿈을 제거하는 다른 방법이 있지만 더 편리한 한 줄짜리 줄이기를 기대했습니다.
파일 출력 스트림이 있고 텍스트가 문자열로 주어진 경우 정규 표현식이 중복 된 새 행을 대체하는 방법을 확인했습니다. 하지만 내가 알기로는 위 코드 샘플 중 하나도 가지고 있지 않다는 것을 이해합니다. 그렇다면이 질문은 샘플 코드로 어떻게 처리할까요? – untergam
당신은 이미 해결책을 찾았지만 어떤 점에서 유용 할 수 있기 때문에 이것에 대해 계속 설명하려고합니다. 먼저 파일 내용을'std :: string text'로 추출한 다음'std :: stringstream sstream'을 선언합니다. 그런 다음 위 함수를 호출하지만 파일 스트림 대신 문자열 스트림을 전달합니다. 마지막으로 파일 스트림 대신 문자열 stream을 사용하여'read_xml()'을 호출합니다. – FallenWarrior