當函數保存xml時,是否可以通過write_xml調用中用作第三個參數的xml_writer_settings來省略xml聲明?我的意思是,我希望不要有最初的「xml version =」blah「encoding =」blah blah「部分。我正在搜索互聯網,但我仍然沒有找到答案。如何操作?保存帶升壓xml時省略xml聲明
7
A
回答
1
不,這是不可能的。look here for members of xml_writer_settings
而且也write_xml
電話write_xml_internal
是(升壓1.52)
template<class Ptree>
void write_xml_internal(
std::basic_ostream<typename Ptree::key_type::value_type> &stream,
const Ptree &pt,
const std::string &filename,
const xml_writer_settings<typename Ptree::key_type::value_type> & settings)
{
typedef typename Ptree::key_type::value_type Ch;
typedef typename std::basic_string<Ch> Str;
stream << detail::widen<Ch>("<?xml version=\"1.0\" encoding=\"")
<< settings.encoding
<< detail::widen<Ch>("\"?>\n");
write_xml_element(stream, Str(), pt, -1, settings);
if (!stream)
BOOST_PROPERTY_TREE_THROW(xml_parser_error("write error", filename, 0));
}
7
是的,這是可能的,但你需要調用的函數「write_xml_element」直接。以下是一個示例,使用boost 1.49:
using namespace boost::property_tree;
ptree pt;
...
write_xml_element(std::cout,ptree::key_type(),pt,-1,xml_writer_settings<ptree::key_type::value_type>());
當然。你可以用std :: ofstream或其他你想要的輸出流來替換標準輸出。
0
看來,沒有xml_writer_settings,write_xml_element不能工作。而xml_writer_settings有兩個不同的不兼容版本;一個和另一個。
在升壓v1.58此行是有效的:
boost::property_tree::xml_writer_settings<std::string> settings;
boost::property_tree::xml_parser::write_xml_element(xmlStream,ptree::key_type(),pt_,-1, settings);
而提升1.54,這些都是有效的:
boost::property_tree::xml_writer_settings<char> settings;
boost::property_tree::xml_parser::write_xml_element(xmlStream,ptree::key_type(),pt_,-1, settings);
我不知道如果有一個統一他們的任何解決方案。因此,在使用write_xml_element時考慮boost版本。
相關問題
- 1. JavaScript XSLT轉換省略了xml聲明
- 2. 將哈希轉換爲XML,省略XML頭聲明
- 3. 在保存時排除xml聲明
- 4. 如何在使用XElement.Save時省略xml聲明?
- 5. 使用dataweave寫入文件時省略xml聲明
- 6. 省略在Groovy聲明
- 7. 使用Java DOM + Transformer時,省略xml聲明中的獨立屬性。
- 8. C#省略節點XML
- 9. XML檢查忽略聲明的元素
- 10. XML聲明2013
- 11. WSO2 XML聲明
- 12. 升壓C++ XML解析
- 13. dom4j中XML聲明
- 14. XML模式聲明
- 15. XML聲明輸出
- 16. 添加XML聲明
- 17. 關於XML聲明
- 18. 如何痛飲省略向前聲明
- 19. 使用StAXResult調用Transformer時忽略XML聲明
- 20. 更改Xml聲明或選擇xml無聲明部分
- 21. JAXB 2:解組XML沒有XML聲明
- 22. 添加XML聲明字符串XML
- 23. 刪除XML中的多個XML聲明
- 24. 升壓:ASIO :: UnregisterWaitEx尚未聲明
- 25. C++升壓向前聲明的問題
- 26. 保存XML文檔,打破我的XSI聲明
- 27. 帶省略元素的CSS省略號?
- 28. 省略elementwrappers和獲取XML根值
- 29. Scala的XML省略結束標記
- 30. 保存XML時不會保存.net
你可以修剪第一個包含的字符串後write_xml() – AlexT