原有一个大软件,使用几十个XML文件作数据库。我现在要写一个小工具软件,直接读取这些XML文件,使用其中的数据,不需要回写。  我希望:使用ADO、CDS等Delphi自带的数据集控件(而不是第三方的),像读取Paradox、Oracle、MSSQL一样,读入数据,供给DataSource、DBGrid、DBText等控件使用,以及通过First、Last、Locate、FieldByName('xxx').AsValue等方式进行操作。可以用其他Delphi控件进行辅助处理,但最终必须读到数据集控件中。  我在各个论坛中也搜到了一些似是而非的解答,但要么不是一种情况,要么泛泛而论,无法实践。希望各位大虾给予明确指点!  附上一个完整文件做例子:- <NewDataSet>
- <zd_bz>
  <BZ_DM>156</BZ_DM> 
  <BZ_MC>人民币元</BZ_MC> 
  <XYBZ>Y</XYBZ> 
  </zd_bz>
- <zd_bz>
  <BZ_DM>344</BZ_DM> 
  <BZ_MC>香港元</BZ_MC> 
  <XYBZ>Y</XYBZ> 
  </zd_bz>
- <zd_bz>
  <BZ_DM>446</BZ_DM> 
  <BZ_MC>澳门元</BZ_MC> 
  <XYBZ>Y</XYBZ> 
  </zd_bz>
- <zd_bz>
  <BZ_DM>826</BZ_DM> 
  <BZ_MC>英镑</BZ_MC> 
  <XYBZ>Y</XYBZ> 
  </zd_bz>
- <zd_bz>
  <BZ_DM>978</BZ_DM> 
  <BZ_MC>欧元</BZ_MC> 
  <XYBZ>Y</XYBZ> 
  </zd_bz>
  </NewDataSet>
            

解决方案 »

  1.   

    研究一下Delphi自带的工具,XML Mapper,可能会对你有些帮助.
    xml和数据集是可以相互转化的
      

  2.   

    谢谢 Cipherliu(孤鹰) ,小弟看过一点Mapper的资料,但是我不能让用户每次进入我的工具软件之前先用Mapper把几十个XML都转换一遍啊。
      

  3.   

    现在我这里自己写一个操作xml的类。但只是把对xml的操作封撞成了类似ado的操作,就是first,open,addnew
    但不能联系到数据集控件。
      

  4.   

    不用回写?关注我这样做过,
    用两个数据读写控件,
    如用adoquery1的loadfromfile将xml读入后,再对adoquery1的数据读入到adoquery2中并保存存,以后需要使用数据时,就对adoquery2进行操作。
      

  5.   

    我的xml不是ado格式的,是原系统的开发商自己定义的,很规范,但不是ado格式。
      

  6.   

    你看看Delphi6的例子!里面有。