怎么定义一种数据结构来存储xml文件中的每个节点

如何定义一种数据结构来存储xml文件中的每个节点
问题如题,
xml文件例子如下
<?xml version="1.0" encoding="GBK" ?> 
- <breakfast_menu>
- <food>
  <name>Belgian Waffles</name> 
  <price>$5.95</price> 
  <description>two of our famous Belgian Waffles with plenty of real maple syrup</description> 
  <calories>650</calories> 
  </food>
- <food>
  <name>Strawberry Belgian Waffles</name> 
  <price>$7.95</price> 
  <description>light Belgian waffles covered with strawberries and whipped cream</description> 
  <calories>900</calories> 
  </food>
- <food>
  <name>Berry-Berry Belgian Waffles</name> 
  <price>$8.95</price> 
  <description>light Belgian waffles covered with an assortment of fresh berries and whipped cream</description> 
  <calories>900</calories> 
  </food>
- <food>
  <name>French Toast</name> 
  <price>$4.50</price> 
  <description>thick slices made from our homemade sourdough bread</description> 
  <calories>600</calories> 
  </food>
- <food>
  <name>Homestyle Breakfast</name> 
  <price>$6.95</price> 
  <description>two eggs, bacon or sausage, toast, and our ever-popular hash browns</description> 
  <calories>950</calories> 
  </food>
  </breakfast_menu>

上面是简单的一种情况,假如每个节点的格式不同,有该怎么做?求大神!

------解决方案--------------------
xml是字符串,如果要存所有的节点内容,使用字符串是肯定行的。
------解决方案--------------------
节点是XML中最重要的元素,xmlNode代表XML文档中的一个节点,实现为一个struct,此结构内容很丰富也很重要,其定义在tree.h中,具体说明如下:
 
typedef struct _xmlNode xmlNode;
 
typedef xmlNode *xmlNodePtr;
 
struct _xmlNode {
 
    void           *_private;/* application data */
 
    xmlElementType   type;   /* type number, must be second ! */
 
    const xmlChar   *name;      /* the name of the node, or the entity */
 
    struct _xmlNode *children; /* parent->childs link */
 
    struct _xmlNode *last;   /* last child link */
 
    struct _xmlNode *parent;/* child->parent link */
 
    struct _xmlNode *next;   /* next sibling link */
 
    struct _xmlNode *prev;   /* previous sibling link */