2011-05-16 67 views
1

我遇到問題。我需要創建一個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。我有一個錯誤:它說它不是正確寫入。我在哪裏錯了?:)

+1

請發佈**正確**(完整)錯誤信息,您正在獲取。 – Mat 2011-05-16 11:46:20

+0

調用'doc.ErrorDesc()'來查看問題是什麼。 – trojanfoe 2011-05-16 11:49:14

+0

而..這是你真正的代碼? – 2011-05-16 11:52:12

回答

0

您正在嘗試將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"); 
} 

編譯後,你必須從命令行啓動應用程序,當然。

0

可能是您錯過了「 #include」tinystr.h「」?

3

萬一有人需要一個XML文件的這樣的結構:

_

因此,這裏是該代碼:

_

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"); 

_

和選項如何添加更多然後一個用元素循環機制(for /時):

_

<?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");