Ubuntu TinyXml使用工程 简版

TinyXml下载地址: TinyXML download | SourceForge.net

将压缩包中的 tinystr.cpp , tinystr.h , tinyxml.cpp , tinyxmlerror.cpp , tinyxml.h , tinyxmlparser.cpp 这六个文件放到项目工程中。

代码如下:

#include <iostream>

#include "tinystr.h"
#include "tinyxml.h"

using namespace std;

int CreateXml()
{
    // 创建一个xml结构
    TiXmlDocument* pDoc = new TiXmlDocument();

    TiXmlDeclaration* pDec = new TiXmlDeclaration("1.0", "GB2312", "");
    pDoc->LinkEndChild(pDec);
    // 创建一个根节点并连接到xml
    TiXmlElement* pRoot = new TiXmlElement("item");
    pDoc->LinkEndChild(pRoot);
    // 创建一个name子节点并连接根节点下
    TiXmlElement* nameElement = new TiXmlElement("name");
    pRoot->LinkEndChild(nameElement);
    nameElement->SetAttribute("ID", "1");
    TiXmlText* nameContent = new TiXmlText("opop");
    nameElement->LinkEndChild(nameContent);

    TiXmlElement* addrElement = new TiXmlElement("addr");
    pRoot->LinkEndChild(addrElement);
    TiXmlText* addrContent = new TiXmlText("heilongjiang");
    addrElement->LinkEndChild(addrContent);

    TiXmlElement* telElement = new TiXmlElement("tel");
    pRoot->LinkEndChild(telElement);
    TiXmlElement* tel_number = new TiXmlElement("Number");
    telElement->LinkEndChild(tel_number);
    tel_number->SetAttribute("yidong", "123456789");
    tel_number->SetAttribute("liantong", "987654321");

    TiXmlElement* emailElement = new TiXmlElement("e-mail");
    pRoot->LinkEndChild(emailElement);
    TiXmlElement* emailContent_qq = new TiXmlElement("QQ");
    emailElement->LinkEndChild(emailContent_qq);
    TiXmlText* test_qq = new TiXmlText("");
    test_qq->SetValue("opop@qq.com");
    emailContent_qq->LinkEndChild(test_qq);
    TiXmlElement* emailContent_163 = new TiXmlElement("163");
    emailElement->LinkEndChild(emailContent_163);
    TiXmlText* test_163 = new TiXmlText("");
    test_163->SetValue("opop@163.com");
    emailContent_163->LinkEndChild(test_163);


    pDoc->Print();

    pDoc->SaveFile("test.xml");

    delete pDoc;

    cout<<"write success!!! bye_bye"<<endl;

    return 0;
}

int ReadXml()
{
    cout<<"read success!!! bye_bye"<<endl;
    //创建一个xml结构并载入文件内容
    TiXmlDocument* pDoc = new TiXmlDocument();
    pDoc->LoadFile("test.xml");
    pDoc->Print();
    //获取根节点
    TiXmlElement* pRoot = pDoc->RootElement();
    printf("root = %s\n", pRoot->Value());
    //获取根节点下的子节点并打印其内容
    TiXmlElement* pFirst = pRoot->FirstChildElement("name");
    printf("name = %s\n", pFirst->FirstChild()->ToText()->Value());
    printf("ID = %s\n", pFirst->Attribute("ID"));

    pFirst = pRoot->FirstChildElement("tel");
    TiXmlElement* pSencond = pFirst->FirstChildElement("Number");
    printf("yidong = %s\n", pSencond->Attribute("yidong"));

    pFirst = pRoot->FirstChildElement("e-mail");
    pSencond = pFirst->FirstChildElement("QQ");
    printf("QQ = %s\n", pSencond->FirstChild()->ToText()->Value());

    delete  pDoc;

    return 0;
}

int main()
{
    cout << "Hello World!" << endl;

    CreateXml();

    cout<<endl<<endl<<endl<<endl<<endl;

    ReadXml();

    return 0;
}

说明:上面会出现readXml时LoadFile不全的情况,因为存文件时数字163少了右边部分,所以节点不要写数字。

更新一版程序

#include <iostream>

#include "tinystr.h"
#include "tinyxml.h"

using namespace std;

int CreateXml()
{
    // 创建一个xml结构
    TiXmlDocument* pDoc = new TiXmlDocument();

    TiXmlDeclaration* pDec = new TiXmlDeclaration("1.0", "GB2312", "");
    pDoc->LinkEndChild(pDec);
    // 创建一个根节点并连接到xml
    TiXmlElement* pRoot = new TiXmlElement("item");
    pDoc->LinkEndChild(pRoot);
    // 创建一个name子节点并连接根节点下
    TiXmlElement* nameElement = new TiXmlElement("name");
    pRoot->LinkEndChild(nameElement);
    nameElement->SetAttribute("ID", "1");
    TiXmlText* nameContent = new TiXmlText("opop");
    nameElement->LinkEndChild(nameContent);

    TiXmlElement* addrElement = new TiXmlElement("addr");
    pRoot->LinkEndChild(addrElement);
    TiXmlText* addrContent = new TiXmlText("heilongjiang");
    addrElement->LinkEndChild(addrContent);

    TiXmlElement* telElement = new TiXmlElement("tel");
    pRoot->LinkEndChild(telElement);
    TiXmlElement* tel_number = new TiXmlElement("Number");
    telElement->LinkEndChild(tel_number);
    tel_number->SetAttribute("yidong", "123456789");
    tel_number->SetAttribute("liantong", "987654321");

    TiXmlElement* emailElement = new TiXmlElement("e-mail");
    pRoot->LinkEndChild(emailElement);
    TiXmlElement* emailContent_163 = new TiXmlElement("e-mail:163");
    emailElement->LinkEndChild(emailContent_163);
    TiXmlText* test_163 = new TiXmlText("");
    test_163->SetValue("opop@163.com");
    emailContent_163->LinkEndChild(test_163);
    TiXmlElement* emailContent_qq = new TiXmlElement("e-mail:QQ");
    emailElement->LinkEndChild(emailContent_qq);
    TiXmlText* test_qq = new TiXmlText("");
    test_qq->SetValue("opop@qq.com");
    emailContent_qq->LinkEndChild(test_qq);

    pDoc->Print();

    pDoc->SaveFile("test.xml");

    delete pDoc;

    cout<<"write success!!! bye_bye"<<endl;

    return 0;
}

int ReadXml()
{
    cout<<"read success!!! bye_bye"<<endl;
    //创建一个xml结构并载入文件内容
    TiXmlDocument* pDoc = new TiXmlDocument();
    pDoc->LoadFile("test.xml");
    pDoc->Print();
    //获取根节点
    TiXmlElement* pRoot = pDoc->RootElement();
    printf("root = %s\n", pRoot->Value());
    //获取根节点下的子节点并打印其内容
    TiXmlElement* pFirst = pRoot->FirstChildElement();//读取第一条
    printf("element = %s\n", pFirst->Value());
    printf("name = %s\n", pFirst->FirstChild()->Value());
    printf("ID = %s\n", pFirst->Attribute("ID"));

    pFirst = pFirst->NextSiblingElement();//读取刚才那条的下一个
    printf("element = %s\n", pFirst->Value());
    printf("name = %s\n", pFirst->FirstChild()->Value());

    pFirst = pFirst->NextSiblingElement();
    TiXmlElement* pSencond = pFirst->FirstChildElement("Number");
    printf("yidong = %s\n", pSencond->Attribute("yidong"));

    pFirst = (TiXmlElement*)pRoot->IterateChildren("e-mail", NULL);//查找想要读取的这一条
    pSencond = pFirst->FirstChildElement();
    printf("163 = %s\n", pSencond->FirstChild()->Value());
//    pSencond = pSencond->NextSiblingElement();
//    printf("QQ = %s\n", pSencond->FirstChild()->Value());
    printf("QQ = %s\n", pSencond->NextSibling()->FirstChild()->Value());

    delete  pDoc;

    return 0;
}

int main()
{
    cout << "Hello World!" << endl;

    CreateXml();

    cout<<endl<<endl<<endl<<endl<<endl;

    ReadXml();

    return 0;
}

运行结果截图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ubuntu中安装TinyXML,可以按照以下步骤进行操作: 1. 首先,将TinyXML的压缩包解压缩到您的项目工程中。 2. 接下来,您需要使用cmake来配置和构建TinyXML。打开终端,并使用以下命令进入到TinyXML的解压缩文件夹中: ``` cd /path/to/tinyxml ``` 3. 然后,创建一个build目录并进入该目录: ``` mkdir build cd build ``` 4. 使用cmake命令来配置TinyXML的构建: ``` cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/path/to/install . ``` 其中,`/path/to/install`是您希望安装TinyXML的路径,可以根据您的需要进行修改。 5. 运行make命令进行编译: ``` make ``` 6. 完成编译后,运行以下命令进行安装: ``` make install ``` 这样,TinyXML就会被安装到您指定的安装路径中。 请注意,以上步骤假设您已经正确安装了cmake和make工具。如果您的系统中尚未安装这些工具,请使用以下命令进行安装: ``` sudo apt-get install cmake make ``` 希望以上步骤对您安装TinyXML有所帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Ubuntu TinyXml使用工程 ](https://blog.csdn.net/yuchunhai321/article/details/127806697)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [libtmx-parser:C ++ TMX文件解析器-读取平铺的地图编辑器文件](https://download.csdn.net/download/weixin_42097189/18780645)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [在ubuntu上通过编译源代码生成并安装MAVSDK-C++](https://blog.csdn.net/weixin_39472686/article/details/120273151)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值