Почему в Vala node-›set_content не принимает символ амперсанда?

Следующий код

Xml.Node* node = new Xml.Node (null, "name");
node->set_content("&");

выдает следующую ошибку:

ошибка: незавершенная ссылка на сущность

Это баг или я что-то не так делаю?

Как больше, так и меньше символов работают нормально. Кроме того, метод add_content отлично работает с символом амперсанда.


person Wayne    schedule 26.01.2013    source источник


Ответы (1)


Это баг или я что-то не так делаю?

Последний. Из документации xmlNodeSetContent: "контент должен быть частью XML CDATA, поэтому он позволяет ссылки на объекты, но сначала необходимо экранировать специальные символы XML...". Для этого можно использовать GLib.Markup.escape_text.

Кроме того, метод add_content отлично работает с символом амперсанда.

Из документации xmlNodeAddContent: "В отличие от xmlNodeSetContent(), @content должен быть необработанным. text, поэтому разрешены специальные символы XML без экранирования, ссылки на объекты не поддерживаются».

person nemequ    schedule 26.01.2013