c++ - 使用 tinyxml 创建 xml

标签 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;
    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 时。我有一个错误:它说它没有正确编写。我哪里错了?:)

最佳答案

以防万一有人需要这样的 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" );

_

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

_

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

关于c++ - 使用 tinyxml 创建 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6016862/

相关文章:

c++ - 缓存谷歌地图以供离线使用

c++ - 我无法理解 std::istream_iterator 的使用

c++ - 如何在单元测试中访问私有(private)成员?

c++ - 链接器如何处理定义在多个头文件中的虚函数?

tinyxml - TinyXml 可以从字符串而不是文件加载 Xml 吗?

c++ - TinyXml++ 教程中的错误

c++ - 来自 TinyXML++ 的奇怪行为

c++ - 如何在 C++ 中实现信号和事件?