使用 tinyxml 创建 xml

Create xml using tinyxml

本文关键字:xml 创建 tinyxml 使用      更新时间:2023-10-16

>我有一个问题。我需要创建一个以下 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" );

_

还有一个选项如何使用循环添加多个元素(对于/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++用作某种类型的脚本。您必须创建一个放置生产代码的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" );
}

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

也许,你错过了" #include "tinystr.h" "?

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