2011-03-30 80 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"); 
}