Создайте xml, используя tinyxml
У меня проблема. Мне нужно создать следующий XML:
<?xml version="1.0" encoding="utf-8"?>
<MyApp value="5" name="me">
</MyApp>
Используя код C++, я сделал следующее:
#include <iostream>
#include <string>
#include "tinyxml.h"
void main(){
TiXmlDocument doc;
TiXmlDeclaration * decl = new TiXmlDeclaration( "1.0", "utf-8", "");
doc.LinkEndChild( decl );
TiXmlElement * root;
root = new TiXmlElement( "MyApp" );
root->SetAttribute("value","5");
root->SetAttribute("name","me");
doc.LinkEndChild( root );
doc.SaveFile( "madeByHand.xml" );
return 0;
}
Я компилирую его, используя g ++ tinyxml.cpp tinyxmlerror.cpp и tinyxmlparser.cpp. Когда я хочу увидеть xml, который я создал. У меня есть ошибка: она говорит, что она написана не полностью. где я не прав?:)
3 ответа
На всякий случай кому-то понадобится такая структура XML-файла:
<?xml version="1.0" ?>
<Hello>Opening a new salutation
<Greeting value="5" name="me"></Greeting>
</Hello>
_
Вот код для этого:
_
TiXmlDocument doc;
TiXmlDeclaration* decl = new TiXmlDeclaration( "1.0", "", "" );
doc.LinkEndChild( decl );
TiXmlElement* element = new TiXmlElement( "Hello" );
doc.LinkEndChild( element );
TiXmlText* text = new TiXmlText( "Opening a new salutation" );
element->LinkEndChild( text );
TiXmlElement* element2 = new TiXmlElement( "Greeting" );
element2->SetAttribute("value","5");
element2->SetAttribute("name","me");
element->LinkEndChild( element2 );
TiXmlText* text2 = new TiXmlText( "" );
element2->LinkEndChild( text2 );
doc.SaveFile( "madeByHand2.xml" );
_
И вариант, как добавить более одного элемента, используя циклы (для / в то время):
_
<?xml version="1.0" ?>
<Hello>Opening a new salutation
<Greeting value="5" name="me"></Greeting>
<Greeting value="5" name="me"></Greeting>
<Greeting value="5" name="me"></Greeting>
</Hello>
_
И вот код для этого:
_
TiXmlDocument doc;
TiXmlDeclaration* decl = new TiXmlDeclaration( "1.0", "", "" );
doc.LinkEndChild( decl );
TiXmlElement* element = new TiXmlElement( "Hello" );
doc.LinkEndChild( element );
TiXmlText* text = new TiXmlText( "Opening a new salutation" );
element->LinkEndChild( text );
for(long i=0; i<3; i++)
{
TiXmlElement* element2 = new TiXmlElement( "Greeting" );
TiXmlText* text2 = new TiXmlText( "" );
element2->SetAttribute("value","5");
element2->SetAttribute("name","me");
element->LinkEndChild( element2 );
element2->LinkEndChild( text2 );
}
doc.SaveFile( "madeByHand2.xml" );
Вы должны добавить tinyxmlparser.cpp tinyxmlerror.cpp tinyxml.cpp tinyxml.h tinystr.cpp tinystr.h в свой проект
Вы пытаетесь использовать C++ как некоторый тип сценария. Вы должны создать main()
функция, в которой размещен производительный код.
#include <iostream>
#include <string>
#include "tinyxml.h"
void main()
{
TiXmlDocument doc;
TiXmlDeclaration * decl = new TiXmlDeclaration( "1.0", "utf-8", "");
doc.LinkEndChild( decl );
TiXmlElement * root;
root = new TiXmlElement( "MyApp" );
root->SetAttribute("value","5");
root->SetAttribute("name","me");
doc.LinkEndChild( root );
doc.SaveFile( "madeByHand.xml" );
}
Конечно, после компиляции вы должны запустить приложение из командной строки.