C++ 使用tinyxml创建xml

C++ 使用tinyxml创建xml,c++,tinyxml++,C++,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; TiXmlDec

我有个问题。我需要创建以下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;
}
#包括
#包括
#包括“tinyxml.h”
void main(){
TiXmlDocument文档;
TiXmlDeclaration*decl=新的TiXmlDeclaration(“1.0”、“utf-8”和“);
LinkedChild文件(decl);
TiXmlElement*根;
root=新的TiXmlElement(“MyApp”);
根->设置属性(“值”,“5”);
根->设置属性(“名称”、“我”);
doc.LinkEndChild(根);
doc.SaveFile(“madeByHand.xml”);
返回0;
}
我使用g++tinyxml.cpp tinyxmlerro.cpp和tinyxmlparser.cpp编译它。
当我想查看我创建的xml时。我有一个错误:它说它写得不正确。我哪里错了?):< /p> < p>你试图用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" );
}
#包括
#包括
#包括“tinyxml.h”
void main()
{
TiXmlDocument文档;
TiXmlDeclaration*decl=新的TiXmlDeclaration(“1.0”、“utf-8”和“);
LinkedChild文件(decl);
TiXmlElement*根;
root=新的TiXmlElement(“MyApp”);
根->设置属性(“值”,“5”);
根->设置属性(“名称”、“我”);
doc.LinkEndChild(根);
doc.SaveFile(“madeByHand.xml”);
}

编译后,您当然必须从命令行启动应用程序。

可能您遗漏了“#include“tinystr.h”?

以防任何人需要这样的XML文件结构:

<?xml version="1.0" ?>
<Hello>Opening a new salutation
   <Greeting value="5" name="me"></Greeting>
</Hello>
_

以及如何使用循环(for/while)添加多个元素的选项:

_


开始新的敬礼
_

下面是代码:

_

TiXmlDocument;
TiXmlDeclaration*decl=新的TiXmlDeclaration(“1.0”、“1.0”、“1.0”);
LinkedChild文件(decl);
TiXmlElement*element=新的TiXmlElement(“你好”);
doc.LinkEndChild(元素);
TiXmlText*text=新的TiXmlText(“打开新的问候”);
元素->LinkedChild(文本);
对于(长i=0;i状态(“值”,“5”);
element2->SetAttribute(“名称”、“我”);
元素->LinkedChild(元素2);
element2->LinkEndChild(text2);
}
doc.SaveFile(“madeByHand2.xml”);

您必须将tinyxmlparser.cpp tinyxmler.cpp tinyxml.cpp tinyxml.h tinystr.cpp tinystr.h添加到您的项目中

请发布您收到的准确(完整)错误消息。请调用
doc.ErrorDesc()
查看问题所在。这是您的真实代码吗?如果添加
main()
函数,这应该可以运行。我已经生成并运行了此代码。生成的“madeByHand.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" );
<?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" );