向Poco XMLConfiguration添加新密钥

时间:2018-07-24 09:16:53

标签: c++ poco-libraries

对于我当前的问题,假设一个示例XML配置文件如下:

<Test>
    <Section>
        <SharedProperties>
            <SharedProperty Name="Style1" Value="mystyle"/>
        </SharedProperties>
    </Section>
</Test>

我正在使用Poco::Util::XMLConfiguration来读取此XML文件并检查和设置SharedProperty值,如下所示:

Poco::AutoPtr<Poco::Util::XMLConfiguration> pConfig = new Poco::Util::XMLConfiguration(pathToConfigFile);
pLocal->setString("Section.SharedProperties.SharedProperty[@Name=Style1][@Value]", "NEWSTYLE");
pLocal->save(pathToConfigFile);

这可以正常工作,并将Value更新为NEWSTYLE

<SharedProperty Name="Style1" Value="mystyle"/>元素不存在时,会发生此问题。尝试呼叫setString时,出现以下异常:

Node not found in XMLConfiguration: Section.SharedProperties.SharedProperty[@Name=Style1][@Value]

在其他示例中调用setString将成功创建新元素,但是我认为这会失败,因为它试图在不存在的键上创建Value属性。

我还尝试通过执行以下操作来创建具有正确名称的空白元素,但这引发了Node not found in XMLConfiguration: Section.SharedProperties.SharedProperty[@Name=Style1]

的类似异常
pSharedProperties->setString("Section.SharedProperties.SharedProperty[@Name=Style1]","");

在这种情况下,是否有解决方法,还是我必须使用XML解析来手动添加新元素?

0 个答案:

没有答案