pugixml“extend”元素来增加价值

时间:2011-03-30 13:21:32

标签: c++ xml pugixml

我试图设置一个元素的值,当元素看起来像这样<element></element>时我会这样做:

pugi::xml_node node = xmlBase.child("element");
pugi::xml_node nodechild = node.first_child();
nodechild.set_value(this->elementValue);

但是,当我有一个看起来像这样的元素时:

<element />

这不会工作..我尝试在“set_value”行

之前使用它
if(nodechild == NULL)
{
    nodechild = node.append_child();
}

但这将在该元素中创建一个新元素,我不想这样做,

也许我的拳头方法甚至是错的? 你如何正确设置元素的值?

2 个答案:

答案 0 :(得分:7)

似乎解决方案就是这样做:

nodechild = node.append_child(pugi::node_pcdata);

这将创建一个仅包含元素

中的纯文本的子项

答案 1 :(得分:3)

在尝试设置值之前,应检查子元素是否等于null_node。如果它是null_node,你应该改为append_child:

xml_node firstchild = node.first_child();
if( !firstchild )
{
  firstchild.append_child(pugi::node_pcdata).set_value("foo");
}
else
{
  firstchild.set_value("foo");
}