我想创建使用POCO库读取和写入xml的C++程序。

所以,我写了简单的程序。

我可以阅读每个xml元素。

但是我无法编写新的xml元素。

下面是test.xml。

<config>
    <prop1>value1</prop1>
</config>

这是我的代码。
#include <iostream>
#include <string>
#include <Poco/AutoPtr.h>
#include <Poco/Util/XMLConfiguration.h>

using Poco::AutoPtr;
using Poco::Util::XMLConfiguration;

int main(int argc, char const* argv[])
{
    AutoPtr<XMLConfiguration> pConf(new XMLConfiguration("test.xml"));

    std::string prop1 = pConf->getString("prop1");
    std::cout << "prop1 =  " << prop1 << std::endl;

    pConf->setString("prop2", "input");
    pConf->save("test.xml");

    return 0;
}

该程序运行后,我希望xml文件进行如下更改。
<config>
    <prop1>value1</prop1>
    <prop2>input</prop2> <--New element added!!
</config>

但是结果如下。
<config>
    <prop1>value1</prop1>
</config>

没有改变...

我究竟做错了什么?

提前致谢。

添加了以下信息
  • OS::Linux Mint18.1
  • POCO库版本:: 1.7.6(从源代码生成)
  • 构建系统:: CMake and make和GCC

  • 我运行以下命令。
    sudo apt-get remove ros-kinetic-desktop-full
    

    然后,我可以使用上述程序编写xml文件。

    我认为ros使用POCO库,并且它是我的POCO库的副本。

    因此,我尝试将POCO库(ros)替换为POCO库(mine)。

    我的尝试进行顺利!

    最佳答案

    解决方案如下

    如果您可以使用POCO库读取xml文件而不能写入xml文件。

    您的POCO库和ROS的POCO库可能重复。

    尝试执行以下命令。

  • 安装ROS

    sudo apt-get install ros-kinetic-desktop-full
  • 将带有目标前缀的Poco库重新安装到/ usr / lib和/ usr / include

    ./configure --prefix = / usr

    使

    须藤make install
  • 10-08 00:15