首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用tinyxml创建xml

使用tinyxml创建xml
EN

Stack Overflow用户
提问于 2011-05-16 19:43:45
回答 3查看 12.5K关注 0票数 2

我有个问题。我需要创建以下xml:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<MyApp value="5" name="me">
</MyApp>

使用c++代码,我完成了以下操作:

代码语言:javascript
复制
#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时。我有一个错误:它说它写得不正确。我哪里错了?:)

EN

回答 3

Stack Overflow用户

发布于 2013-07-23 17:10:26

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

代码语言:javascript
复制
<?xml version="1.0" ?>
<Hello>Opening a new salutation
   <Greeting value="5" name="me"></Greeting>
</Hello>

_

下面是这段代码:

_

代码语言:javascript
复制
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 / while):

_

代码语言:javascript
复制
<?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>

_

下面是实现此操作的代码:

_

代码语言:javascript
复制
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" );
票数 7
EN

Stack Overflow用户

发布于 2011-05-16 19:48:29

您正尝试将C++用作某种类型的脚本。您必须创建一个main()函数,其中放置了生产代码。

代码语言:javascript
复制
#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
EN

Stack Overflow用户

发布于 2020-05-01 02:27:18

必须将tinyxmlparser.cpp tinyxmlerror.cpp tinyxml.cpp tinyxml.h tinystr.cpp tinystr.h添加到项目中

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6016862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档