100分问关于一个xml和map结构的有关问题

100分问关于一个xml和map结构的问题
xml结构如下
<AddOn name="d:\Mark" Author="Terry">
  <File path="BFMData.cn.lua" checksum="af5867b971304b441c9929ea1f27b1e0" />
  <File path="BFMData.tw.lua" checksum="6e8dc7ae92b2a59e324a889e1178e237" />
  <File path="BigFootMark.lua" checksum="747558fc6ff4d47992c358d5ad9a9b41" />
  <File path="BigFootMark.toc" checksum="0f2283188df6f526656de763a9e2ff84" />
  <File path="BigFootMark.xml" checksum="c45734fb35830d1d58f2045da672acb4" />
</AddOn>
。。。。。这样的很多

一个什么样的结构可以和xml表对应啊
我现在的是map<cstring,cstring> 前面一个是路径比如 d:\Mark\BFMData.cn.lua,后面的是af5867b971304b441c9929ea1f27b1e0
这样很麻烦读和写xml的时候,什么样的数据结构可以把这 d:\Mark 然后树下面的目录,然后后面的串对应,这样啊?请教大牛

------解决方案--------------------
struct tree 
{
vector<tree*> childs;
map<cstring, cstring> body;
};
------解决方案--------------------
tree 树, 你要的数据结构啊
里面加个属性
string name; 存当前文件夹名称 如 d:\Mark
body 就存你那个 文件名 md5 配对
childs 就是子树,没子树就为empty
------解决方案--------------------
xml就包含了结构
------解决方案--------------------
比如你 d:\Mark
下还有个目录叫 dir1 
那么tree 就有个叫 dir1 的孩子

tree root;
root.name = "d:\Mark";
root.body["xx1.lua"] = "xxxx";
root.body["xx2.lua"] = "xxxx";
root.body["xx3.lua"] = "xxxx";

tree *child = new tree;
child.name = "dir1";
child.body["xx1.lua"] = "cxxxx";
child.body["xx2.lua"] = "cxxxx";

root.childs.push_back(child);

------解决方案--------------------
为什么不用XML的DOM parser?MSXML6或者QT或者Xerces。
------解决方案--------------------
自己定义数据结构吧!
------解决方案--------------------
DOM ,SAX满足你的需求