对于我当前的问题,假设一个示例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解析来手动添加新元素?