使用boost从xml中删除编码属性

时间:2017-11-23 06:22:23

标签: xml boost

[root@pr1]# nano /etc/init.d/gmetad

如何从上面的程序中删除编码 我试图擦除它但是给出了seg错误

我得到的几个例子但它没有使用ptree,如果可能的话我想从ptree元素中删除

1 个答案:

答案 0 :(得分:1)

想要从ptree元素中删除它。因为它从来不是元素的一部分。

它是XML文档的一部分,删除它会使的XML文档:http://xmlwriter.net/xml_guide/xml_declaration.shtml

  

真的,想要删除XML声明是一个明确的信号,表明某人并不了解XML以及如何使用它。

如果您不介意使用未记录的函数,可以编写单个元素,这样您就不会看到XML声明:

<强> Live On Coliru

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

int main() {
    boost::property_tree::ptree pt;
    {
        std::istringstream iss("<methodCall><methodName>number</methodName></methodCall>");
        read_xml(iss, pt);
    }

    // write_xml(std::cout, pt); // with xml declaration:

    // without
    boost::property_tree::xml_parser::write_xml_element(std::cout, pt.front().first, pt.front().second, 0, boost::property_tree::xml_writer_make_settings<std::string>(' ', 0));
}

打印

<methodCall><methodName>number</methodName></methodCall>