想做一个使用ftp自动更新的模块,需要读取xml文档并于服务器的数据核对然后下载,本以为按照网上的教程可以解决但是中间还是遇到了许多问题,这里就记录一下步骤。

配置

  1. Visual Studio 2022
  2. tinyxml,下载链接:TinyXML

步骤

  1. 直接使用nuget下载tinyxml包最后会报错,原因是包里面是Win32编译的,所以最后会出现错误
  2. 根据下载的包,使用visual studio打开,并新建配置管理器,在里面创建x64配置,之后编译tinyxml项目文件,可以一次性将Debug,Release版本编译
    在这里插入图片描述
  3. 生成后将以下几个文件放到文件夹中方便后期引用

在这里插入图片描述

在这里插入图片描述
4. 完成这两步之后,进入项目->属性->C\C++->附加包含目录,将.cpp,.h文件夹添加进去
5. 我们还需要再头文件中引用lib文件不然将会报错

1
#pragma comment(lib,"D:\\C++ Programming\\MFCAutoUpdateApplication\\src\\tinyxml\\lib\\debug\\tinyxml.lib")
  1. 下面是一个代码的实例,串接到MFC显示节点名称
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#pragma once


#include <string>
#include "tinystr.h"
#include "tinyxml.h"
#include <iostream>

#pragma comment(lib,"D:\\C++ Programming\\MFCAutoUpdateApplication\\src\\tinyxml\\lib\\debug\\tinyxml.lib")

using namespace std;

class ReadXML
{
public:
ReadXML(const char* path);
std::string parentNode;
std::string childNode;
private:
void GetXMLData();
};

inline ReadXML::ReadXML(const char* path)
{
TiXmlDocument* doc = new TiXmlDocument();
if (!doc->LoadFile(path))
{
MessageBox(0, R"(InValid Path)", R"(BiMass)", 0);
}

TiXmlElement* root = doc->RootElement();

TiXmlElement* next = root->FirstChildElement();

parentNode = root->Value();

childNode = next->Value();
}

inline void ReadXML::GetXMLData()
{
cout << "uuuu" << endl;
}