Итак, у меня есть этот homewrok, который мне нужен для создания анализатора XML, без использования какой-либо библиотеки синтаксического анализа (например, TinyXML, Xerces и т. Д.). Задача состоит в том, чтобы использовать объектно-ориентированное программирование, поэтому в основном мне нужно хранить каждый элемент как объект некоторого класса, чтобы после этого я мог редактировать его через этот класс и возвращать новые значения в файл xml. (например, если есть элементы с одинаковыми атрибутами «id», мне нужно изменить их ... или получить все дочерние элементы элемента с определенным идентификатором ...) Ниже приведено то, что я написал как класс, но после что я не уверен, как читать файл и хранить информацию в объектах класса.
Я искал ответы во многих местах, но если бы я нашел что-нибудь, это было бы за пределами моего уровня, и я едва мог понять это. Я был бы очень благодарен, если бы кто-то помог мне :)
Заранее спасибо
#pragma once
#pragma warning(disable : 4996)
using namespace std;
const int MAX_TEXT = 500, MAX_ATR = 10, MAX_NAME = 20;
class Attribute {
private:
char* attr_name;
char* attr_value;
public:
char const* get_attrName() { return attr_name; }
char const* get_attrValue() { return attr_value; }
Attribute(char const* n = "<No Attribute>", char const* v = "<Empty>");
//Attribute(Attribute const& a);
void set_attrName(char const* n);
void set_attrValue(char const* v);
};
class Element {
private:
char name[MAX_NAME];
char* id;
char text_content[MAX_TEXT];
Attribute attr[MAX_ATR];
Element* children_array;
public:
Element(char const* ID = "<No ID>", Element* children = nullptr);
char const* get_elemId() { return id; }
Attribute get_Attr(int a) { return attr[a]; }
void set_elemID(char const* id_name);
};