2011-03-30 55 views
3

我想设置一个元素的值,regulary当元素看起来像这样<element></element>我只是这样做:pugixml“扩展”元素添加值

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(); 
} 

但这会在该元素内创建一个新元素,而我不想这样做,或许我的拳头方法甚至是错误的? 你如何正确设置元素的值?

回答

7

好像解决的办法是要做到这一点:

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

这将创建一个孩子,多数民众赞成在元素中唯一的纯文本

+2

这是正确的;根据http://pugixml.googlecode.com/svn/tags/latest/docs/manual/dom.html#node_pcdata文本里面的元素有自己的节点; 没有子节点(也没有; x有一个PCDATA子节点),因此您需要显式附加具有正确类型的节点。 – zeuxcg 2011-03-30 18:26:51

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"); 
}