首先要有一个表示xml属性的结构体:
struct XMLProperty {
PropertyKey name; //属性名,string类型
PropertyVal text; //属性值,string类型
};
一个元素有一个标签,可以有若干个属性:
typedef std::map<ElementName, XMLProperty> XMLElement;
其中ElementName为string类型,这里一个元素有一个标签,一个属性名和一个属性值
如果一个元素内有多个标签的话,将所有子标签都看成元素的属性值。
XML文件中一个元素为一个节点:
struct XMLNode {
public:
void ShowNode(XMLNode *root);
private:
void CreateNode(XMLNode **node, XMLElement element);
void InintNode(XMLNode **root, XMLElement element);
public:
XMLElement Element; //节点数据
XMLNode* firstchild;
XMLNode* nextlibling;
};
每个节点都包含一个元素值, firstchild(指向孩子的指针),nextlibing(指向兄弟的指针)。通过孩子兄弟表示法将xml中每个元素表示成一颗多叉树,程序将XML文件表示成树后就可以调用结构体里面的函数进行增删改查