Создайте xml, используя tinyxml - PullRequest
1 голос
/ 16 мая 2011

У меня проблема.Мне нужно создать следующий 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, который я создал.У меня есть ошибка: она говорит, что она написана не полностью.где я не прав? :) 1007 *

Ответы [ 3 ]

5 голосов
/ 23 июля 2013

На всякий случай, если кому-то понадобится такая структура 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" );
0 голосов
/ 26 апреля 2013

Возможно, вы пропустили " # include " tinystr.h ""?

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

Вы пытаетесь использовать 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" );
}

После компиляции вы, конечно, должны запустить приложение из командной строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...