★ 如何读取XML文件中的数据 【在线等待】(300分)

  • 主题发起人 snowboat
  • 开始时间
S

snowboat

Unregistered / Unconfirmed
GUEST, unregistred user!
  
  原有一个大软件,使用几十个XML文件作数据库。我现在要写一个小工具软件,直接
读取这些XML文件,使用其中的数据,不需要回写。

  我希望:使用ADO、CDS等Delphi自带的数据集控件(而不是第三方的),就像读取
Paradox、Oracle、MSSQL一样,读入数据,供给DataSource、DBGrid、DBText等控件使
用,以及通过First、Last、Locate、FieldByName('xxx').AsValue等方式进行操作。可
以用其他Delphi控件进行辅助处理,但最终必须读到数据集控件中。

  我在各个论坛中也搜到了一些似是而非的解答,但要么不是同种情况,要么泛泛而
论,无法实践。希望各位大虾给予明确指点!

  附上一个完整的XML文件做例子:
 
- <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>
  
  
 
用do
M,很简单的,你用do
M 做关键字搜索一下,很多的
 
我觉得必须自定义一个DataSet了
 
  
to beta:
我在大富翁和google上都找了,目前没有发现比较直接的解决该问题的方法。
to zhliangming:
是不是说delphi本身的VCL无能为力了?
  
  
 
查询一下HELP中的LOADFROMXML就明白了
 
  
to 衫菜:
  你指的是TXMLDocument的LoadFromXML吗?我感觉它并不能向数据集控件提供数据啊。
  能否详细讲解?
  
 
能满足要求的现成vcl控件肯定没有
不过自定义一个数据集不难啊
况且你需要的是只读的就更容易了
 
我自己做过一个
 
用XML Mapper给每个XML生成一个XTR文件,然后用TXMLTransformProvider读取XML文件,
就可以直接供给TClientDataSet了。
 
fatalexception的办法我试了,可以实现我的需求。不过哪位还有更省事的办法?
 
最好把手工生成xtr的过程都省掉。
 
我希望Borland在Delphi.net中提供个TXMLDataSet:)
我也想过这个问题,在无驱动的小软件中用了TClientData,但那东东控制起来比较
麻烦,尤其查询不好作啊。
 
接受答案了.
 
顶部