Элемент pugixml "extended" для добавления значения - PullRequest
3 голосов
/ 30 марта 2011

Я пытаюсь установить значение элемента, обычно, когда элемент выглядит следующим образом <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 ]

7 голосов
/ 30 марта 2011

Кажется, что решение состоит в том, чтобы сделать это:

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

это создаст дочерний элемент, который будет содержать только простой текст внутри элемента

3 голосов
/ 29 апреля 2011

Вы должны проверить, равен ли дочерний элемент 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");
}
...