原文学习: http://blog.csdn.net/mosaic/article/details/6888934
事实上,我觉得这种方法有点秀气了。通过测试,普通Element中的TEXT是直接利用树形结构到子节点即可完成读取。在链接中的文章中提到<xmlattr>.type。由此判断Element中的属性上级节点为<xmlattr>。测试后可以看到确实是这样的结果:
<VCMergeModule Name="Visual C++ Debug MFC Runtime Libraries" Path="$(CommonProgramFiles)\Merge Modules\Microsoft_VC100_DebugMFC_x86.msm" Architecture="x86">
<File Name="mfc100d.dll"/>
<File Name="mfc100ud.dll"/>
<File Name="mfcm100d.dll"/>
<File Name="mfcm100ud.dll"/>
<File Name="mfcmifc80d.dll"/>
</VCMergeModule>
例如上面的VCMergeModule中的属性信息可以通过下面代码实现:
ptree pt;
string strModuleName;
string strModulePath;
read_xml("test.xml", pt);
strModuleName = pt.get<string>("VCMergeModule.<xmlattr>.Name");
strModulePath = pt.get<string>("VCMergeModule.<xmlattr>.Path");
其他属性同理。