首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于用Cmarkup类解析xml的有关问题

2012-09-29 
关于用Cmarkup类解析xml的问题最近我们老大让我用cmarkup这个类对xml文件进行解析。之前完全没接触过,网上

关于用Cmarkup类解析xml的问题
最近我们老大让我用cmarkup这个类对xml文件进行解析。之前完全没接触过,网上搜的很多资料也都是用cmarkup产生xml,之后对数据的访问,删除啊等一系列的操作。但是我联系到自己的xml文件还是一头雾水,到底怎么对xml文件进行解析,解析是什么意思,是吧xml语言以C++的方式表示出来还是其他什么的不是很懂。希望大家帮帮忙。这东西真心不懂。下边是这个xml文件。希望帮我提提思路或者伪代码也行,先谢谢大家了。我的分不多。大家多包涵!!!!

<root>
<garbage-clean>
 
//系统垃圾清理方式
<run-time-rule>
<item index='1' desc='定时清理' value='13:00;18:00;20:00' />
<item index='2' desc='周期清理' value='30' />
</run-time-rule>


//系统垃圾分类:从如下条目中选择组合
<garbage-classification>
<item value = '1' desc='系统临时文件'/>
<item value = '2' desc='IE缓存文件'/>
<item value = '3' desc='回收站中的文件'/>
<item value = '4' desc='Windows预读文件'/>
<item value = '5' desc='已下载的程序文件'/>
<item value = '6' desc='Windows自动更新留下的补丁'/>
<item value = '7' desc='Office安装文件'/>
<item value = '8' desc='Windows Media Player临时同步文件'/>
<item value = '9' desc='Flash的Cookie文件'/>
<item value = '10' desc='系统分区上指定类型的垃圾文件'/>
<item value = '11' desc='其它磁盘分区上指定的垃圾文件'/>
</garbage-classification>


//系统垃圾文件类型:从如下条目中选择组合
<garbage-file-type>
<item value = '1' type='*.??$' desc='临时文件' />
  <item value = '2' type='*.??~' desc='临时文件' />
<item value = '3' type='*.?~?' desc='临时文件' />
<item value = '4' type='*.~*' desc='临时文件' />
<item value = '5' type='*.^*' desc='临时文件' />
<item value = '6' type='*.temp' desc='临时文件' />
<item value = '7' type='*.tmp' desc='临时文件' />
<item value = '8' type='*.~mp' desc='临时文件' />
<item value = '9' type='*._mp' desc='临时文件' />
<item value = '10' type='*.$*' desc='临时文件' />
<item value = '11' type='*.___' desc='临时文件' />
<item value = '12' type='*.$$$' desc='临时文件' />
<item value = '13' type='*.@@@' desc='临时文件' />
<item value = '14' type='*.---' desc='临时文件' />
<item value = '15' type='*.ftg' desc='全文本搜索组文件' />
<item value = '16' type='*.fts' desc='全文本搜索索引文件' />
<item value = '17' type='*.gid' desc='临时帮助文件' />
<item value = '18' type='*.syd' desc='备份文件' />
<item value = '19' type='*.old' desc='备份文件' />
<item value = '20' type='*.prv' desc='错误日志文件' />
<item value = '21' type='*.fnd' desc='搜索结果文件' />
<item value = '22' type='*.err' desc='编译错误文件' />
<item value = '23' type='*.log' desc='日志文件' />
<item value = '24' type='*.wbk' desc='Word备份文件' />
<item value = '25' type='*.xlk' desc='Excel备份文件' />
<item value = '26' type='*.chk' desc='磁盘检查恢复数据文件' />
<item value = '27' type='*.mch' desc='碎片文件' />
<item value = '28' type='*.dmp' desc='内存转储文件' />
</garbage-file-type>


</garbage-clean>


//使用痕迹清理
<hints-clean>
 
 //使用痕迹清理方式
<run-time-rule>
<item index='1' desc='定时清理' value='13:00;18:00;20:00' />
<item index='2' desc='周期清理' value='30' />
</run-time-rule>


//使用痕迹分类:从如下条目中选择组合
<hints-classification>
<item value = '1' desc='IE历史记录'/>
<item value = '2' desc='IE自动保存密码'/>
<item value = '3' desc='IE自动完成表单数据'/>
<item value = '4' desc='IE地址栏下拉列表历史数据(需重启IE后生效)'/>
<item value = '5' desc='IE上网产生的Cookies数据'/>
<item value = '6' desc='开始菜单最近文档历史'/>
<item value = '7' desc='运行命令历史(需重启系统后生效)'/>
<item value = '8' desc='Windows搜索记录'/>
<item value = '9' desc='Microsoft Office系列产品文件打开历史'/>


<item value = '10' desc='Windows写字板文件打开历史'/>
<item value = '11' desc='Windows媒体播放器文件打开历史'/>
<item value = '12' desc='暴风影音文件打开历史'/>
<item value = '13' desc='UltraEdit文件打开历史'/>
<item value = '14' desc='WinRAR文件打开历史'/>
</hints-classification>
</hints-clean>

</root>


[解决办法]
参考http://blog.csdn.net/a0700746/article/details/6305117,但其中的nodes不知是怎么定义的,所以我自己写了一下。

C/C++ code
    CMarkup xml;    bool bResult = false;    string temp;    bResult = xml.Load( "D:\\test.xml" );    bResult = xml.IsWellFormed();    bResult = xml.FindElem( "root" );    bResult = xml.IntoElem();    bResult = xml.FindElem( "garbage-clean" );    bResult = xml.IntoElem();    bResult = xml.FindElem( "run-time-rule" );    bResult = xml.IntoElem();    while(  xml.FindElem( "item" ) )    {        string attribName, attribValue;         for( int index = 0; ; ++index )        {            attribName = xml.GetAttribName( index );            if( attribName.empty() )                break;            attribValue = xml.GetAttrib( attribName.c_str() );            MessageBox( attribValue.c_str(), attribName.c_str() );        }    } 

热点排行