tinyXml как добавить элемент - PullRequest
0 голосов
/ 16 мая 2011

У меня есть следующее:

TiXmlDocument doc;
TiXmlDeclaration * decl = new TiXmlDeclaration( "1.0", "utf-8", "");
doc.LinkEndChild( decl );
TiXmlElement * root = new TiXmlElement( "Value" );  
TiXmlElement * element = new TiXmlElement( "number" );  
root->LinkEndChild( element);  

TiXmlText * text = new TiXmlText( "5" );  
element->LinkEndChild( text ); 

Это нормально, как это? Я хотел бы иметь .xml вроде:

<Value>
<number>5</number>
</Value>

THX!

мой вопрос, могу ли я иметь значение типа int в виде строки. если это; нормально, если я отправлю таким образом XML-файл? или есть способ указать, что 5 является целым, а не текстом?

Ответы [ 2 ]

2 голосов
/ 16 мая 2011

Если вы хотите добавить узел, содержащий целочисленное значение, это целое сначала должно быть преобразовано в строку. Вы можете сделать это с помощью различных функций, но я предпочитаю snprintf (другие могут отличаться :))

Рассмотрим следующий пример:

int five = 5;
char buf[256];
snprintf(buf, sizeof(buf), "%d", five); // transforms the integer to a string
TiXmlText * text = new TiXmlText( buf );  
element->LinkEndChild( text ); 
0 голосов
/ 16 мая 2011

Как следует из названия, TiXmlText узел - это текст.Вы можете отправить текстовое представление целого числа, но вы не можете рассматривать значение узла как целое число, если только вы не конвертируете его самостоятельно.

В итоге, вы можете конвертировать из любого типа в текст,вы сохраняете его в узле TiXmlText, а затем возвращаетесь из текста в любой тип при извлечении.

...